PDFBox的:具有非常大的PDF文件的工作。(PDFBox: working with very

2019-07-30 05:50发布

我在尺寸与一些非常大的PDF文件的工作,有的在7GB。 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页在同一时间? 我知道这将是处理速度较慢,但​​此刻我不能处理任何事情。

Answer 1:

在2.0版本*,开这样的PDF:

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

这将设置缓冲内存使用率只使用临时文件(S)(无主存储器)与不受限制的大小。

更新2018年4月17日:更多的技巧来节省内存在描述FAQ 。 尚未描述但活性由于2.0.9是子采样(跳过像素线/行)与PDFRenderer.setSubsamplingAllowed(true)做渲染时。 这对于庞大的图像文件的PDF文件,节省了空间。



文章来源: PDFBox: working with very large PDFs.
标签: java pdfbox