10

サイズが7GBを超える非常に大きなPDFを使用しています。PDF には最大 20,000 ページと多くのフル ページのカラー画像があります。PDFBox を使用して PDF を操作したいのですが、サイズが大きいため、PDF を開こうとすると OutOfMemoryError が発生します。

Intellij、Java 6を使用して、Windows 7でバージョンpdfbox-app-1.6.0を使用しています。

最初に、PDF を PDDocument で開き、各ページを別の PDDocument にコピーする単純なプログラムを作成してみました: http://ideone.com/arKhB

次に、PDFBox CopyDocの例を使用してみました。

どちらの例もメモリ不足です。

これは、PDFBox がドキュメント全体をメモリに読み込もうとしているからだと思います。一度に1ページだけ開く方法はありますか?処理が遅くなることはわかっていますが、現時点では何も処理できません。

4

1 に答える 1

13

2.0.* バージョンでは、次のように PDF を開きます。

PDDocument doc = PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly());

これにより、制限されていないサイズの一時ファイル (メインメモリなし) のみを使用するようにバッファリングメモリの使用が設定されます。

更新 17.4.2018: メモリを節約するためのその他のトリックは、FAQに記載されています。PDFRenderer.setSubsamplingAllowed(true)まだ説明されていませんが、レンダリング時に2.0.9 がサブサンプリング (ピクセルの行/行をスキップ) するためアクティブです。これにより、巨大な画像ファイルを含む PDF ファイルのスペースを節約できます。

于 2016-08-09T20:09:32.390 に答える