PDFBox:处理非常大的 PDF。

2024-03-13

我正在处理一些非常大的 PDF,有些大小超过 7GB。 PDF 最多有 20,000 页和许多整页彩色图像。我想使用 PDFBox 来处理 PDF,但由于大小,当我尝试打开 PDF 时,出现 OutOfMemoryError。

我正在使用版本 pdfbox-app-1.6.0,在 Windows 7 上使用 Intellij、java 6。

首先,我尝试编写一个简单的程序,仅在 PDDocument 中打开 PDF 并将每个页面复制到另一个 PDDocument:http://ideone.com/arKhB http://ideone.com/arKhB

接下来我尝试使用 PDFBoxCopyDoc http://pdfbox.apache.org/apidocs/org/apache/pdfbox/examples/persistence/CopyDoc.html例子。

这两个示例都耗尽了内存。

我假设这是因为 PDFBox 正在尝试将整个文档读入内存。有没有办法让它一次只打开一页?我知道处理速度会慢一些,但目前我无法处理任何东西。


在 2.0.* 版本中,像这样打开 PDF:

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

这会将缓冲内存使用设置为仅使用大小不受限制的临时文件(无主内存)。

2018 年 4 月 17 日更新:更多节省内存的技巧在FAQ https://pdfbox.apache.org/2.0/faq.html。尚未描述,但自 2.0.9 起就处于活动状态,使用以下方式进行子采样(跳过像素行/行)PDFRenderer.setSubsamplingAllowed(true)进行渲染时。这可以为具有巨大图像文件的 PDF 文件节省空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PDFBox:处理非常大的 PDF。 的相关文章

随机推荐