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-файлов с огромными файлами изображений.