2012-07-02 52 views
6

私はいくつかの非常に大きなPDFを扱っています。サイズが7GBを超えるものもあります。 PDFには最大20,000ページ、多くのフルページカラー画像があります。私はPDFを使うのにPDFBoxを使いたいのですが、サイズのせいでPDFを開こうとするとOutOfMemoryErrorが出ます。PDFBox:非常に大きなPDFを扱う。

私はちょうどPDDocumentでPDFを開いた簡単なプログラムを書いて、各ページに対処しようとしたのjava 6.

まず、IntelliJのを使用してWindows 7上で、バージョンpdfboxアプリ-1.6.0で働いていますhttp://ideone.com/arKhB

次の例では、PDFBox CopyDocを使ってみました。

両方のメモリが不足しています。

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

+0

も参照してくださいhttp://stackoverflow.com/questions/586257/read-pdf-uploadstream-one-page-at-a-time-with-java – DNA

+0

おそらくPDFファイルをリストに分割し、リストをループします一度に一定量のページを読むことができます。 – Jasonw

+0

@DNA - リンクありがとう。私はポストする前にPDFBoxでタグ付けされたすべての質問をチェックしたが、私の検索ではそれを見逃していた。 – Pengo

答えて

3

*バージョン、次のようにPDFを開きます。唯一の制限はないサイズの一時ファイル(複数可)(無メインメモリ)を使用する

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

この意志セットアップバッファメモリ使用量。

関連する問題