PDFBox: работа с очень большими PDF-файлами.

Я работаю с некоторыми очень большими PDF-файлами, некоторые размером более 7 ГБ. PDF-файлы имеют до 20 000 страниц и много полностраничных цветных изображений. Я хотел бы использовать PDFBox для работы с PDF-файлами, но из-за размера я получаю OutOfMemoryError, когда я пытаюсь открыть PDF-файлы.

Я работаю с версией pdfbox-app-1.6.0, в Windows 7 с помощью Intellij, java 6.

сначала я попытался написать простую программу, которая просто открыла PDF в PDDocument и справилась с каждой страницей на другую PDDocument:http://ideone.com/arKhB

затем я попытался использовать PDFBox CopyDoc пример.

оба примера исчерпали память.

Я предполагаю, что это потому, что PDFBox пытается прочитать весь документ в память. Есть ли способ открыть только 1 страницу за раз? Я знаю, что это будет медленнее, но на данный момент я ничего не могу обработать.

1 ответов


в 2.0.* версии, откройте PDF следующим образом:

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

это настроит использование буферизации памяти только для использования временных файлов (без основной памяти) с не ограниченным размером.

обновление 17.4.2018: больше трюков для сохранения памяти описаны в часто задаваемые вопросы. Еще не описан, но активен, так как 2.0.9 является подмножеством (пропустить пиксельные строки / строки) с PDFRenderer.setSubsamplingAllowed(true) при выполнении рендеринга. Это экономит место для PDF-файлов с огромными файлами изображений.