次の例に従って、アプリ(Xamarin.iOS) で pdf を表示しました。最近、この方法を使用して一部の pdf ファイルを読み取れないことに気付き始めるまで、すべてが正常に機能していました。
Macを開いて情報を取得したところ、次のことに気付きました。
- Mac ビューアーを使用してドキュメントを pdf にエクスポートすると、問題なく読み取ることができますが、サイズが大きくなります。
- ファイルをそのまま開こうとすると、何も表示されず、白いページが表示されます。
- これは iOS アプリでのみ発生し、Android のビューアーは問題なく動作します。
Mac のビューアーを使用してすべてのファイルを pdf にエクスポートできますが、これは私が必要とするよりも余分な手順です。これを修正するにはどうすればよいですか?
元のエンコーディング: Adobe Acrobat 10.1.16 の PDFScanLib v1.2.2
エクスポートエンコーディング: Mac OS X 10.10.5 Quartz PDFContext
プログラムに追加のテストを実行したところ、pdf ファイルで使用されている圧縮に問題があると結論付けることができました。PDFを表示できるように、CGPDFDocumentが圧縮を削除または無視できる方法はありますか? ページを分割するモバイル バックエンドに PDF をアップロードします。サーバーに保存する前にファイルを消去する方法はありますか? (この問題は、私のアプリの iOS バージョンにのみ影響します)。
追加のテストの後、次のバグに遭遇しました。ここ では、使用されている JBIG2 圧縮に、pdf で jpg を読み取るときにエラーを引き起こす既知のバグがあるようです。(解決策が見つかるまで、さらにテストを続けます。)
訂正: pdf 圧縮は JBIG2 ではなく、FlateDecode です。バイナリ データをテストして読み取った後、オリジナルとエクスポートの両方が同じタイプの圧縮を使用していることに気付きました。(これを理解しようとするにつれて、より多くの情報で更新されます。)