首页 文章

PDFBox:使用非常大的PDF .

提问于
浏览
9

我正在使用一些非常大的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页?我知道处理速度会慢一些,但目前我无法处理任何事情 .

1 回答

  • 7

    在2.0 . *版本中,打开PDF如下:

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

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

    更新17.4.2018:FAQ中描述了更多节省内存的技巧 . 尚未描述但是自2.0.9以来是活动的,在进行渲染时使用 PDFRenderer.setSubsamplingAllowed(true) 进行子采样(跳过像素行/行) . 这为拥有巨大图像文件的PDF文件节省了空间 .

相关问题