[英]PDFBox: working with very large PDFs.
我正在使用一些非常大的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
接下来我尝试使用PDFBox CopyDoc示例。
两个例子都没有内存。
我假设这是因为PDFBox试图将整个文档读入内存。 有没有办法让它一次只打开1页? 我知道处理速度会慢一些,但目前我无法处理任何事情。
在2.0。*版本中,打开PDF如下:
PDDocument doc = PDDocument.load(file, MemoryUsageSetting.setupTempFileOnly());
这将设置缓冲内存使用仅使用大小不受限制的临时文件(无主内存)。
更新17.4.2018: 常见问题解答中描述了更多节省内存的技巧。 尚未描述但有效,因为2.0.9在进行渲染时使用PDFRenderer.setSubsamplingAllowed(true)
进行子采样(跳过像素行/行)。 这为拥有巨大图像文件的PDF文件节省了空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.