2016-06-12 118 views
2

我想用命令拆分PDF导致非常大的PDF文档PDFBox的2.0.2

java -jar pdfbox-app-2.y.z.jar PDFSplit [OPTIONS] <PDF file> 

到一个PDF分割成许多其他的PDF文件。但是我发现有一个问题:PDF分割为“ActiveMQ In Action(Manning-2011).pdf”,它是14.1MB。但是当我运行时

java -jar pdfbox-app-2.0.2.jar PDFSplit -split 5 -startPage 21 -endPage 40 -outputPrefix abc "ActiveMQ In Action(Manning-2011).pdf" 

每个PDF大于79MB!我怎样才能防止这一点?

+0

使用2.0.1。 2.0.2有一个变化,可能不是最好的决定。 https://issues.apache.org/jira/browse/PDFBOX-3380 –

+0

2.0.3已经发布。 –

回答

2

这是PDFBox 2.0.2中的一个已知错误。分裂在2.0.1中工作正常,并且在2.0.3中将再次正常工作。 “坏”代码已经恢复。讨论该问题的原因here。长话短说:2.0.2版在每个源页面上都会进行深度克隆,导致资源重复。

更新:这里的人们一些解决办法代码谁正在使用2.0.2:

static public PDPage importPageFixed(PDDocument document, PDPage page) throws IOException 
{ 
    PDPage importedPage = new PDPage(new COSDictionary(page.getCOSObject()), document.getResourceCache()); 
    InputStream in = null; 
    try 
    { 
     in = page.getContents(); 
     if (in != null) 
     { 
      PDStream dest = new PDStream(document, in, COSName.FLATE_DECODE); 
      importedPage.setContents(dest); 
     } 
     document.addPage(importedPage); 
    } 
    catch (IOException e) 
    { 
     IOUtils.closeQuietly(in); 
    } 
    return importedPage; 
} 
+0

使用PDFBox 2.0.2有没有解决方法?由于PDFBOX-3336和PDFBOX-3363,我宁愿不移动到2.0.1。你什么时候估计2.0.3是稳定的? 谢谢! – Darajan

+2

@Darajan我已经添加了一些解决方法代码。 2.0.3发布前至少需要一个月的时间。代码是稳定的,但我们的PMC主席(发布管理人员)在一个月内无法获得。 –