2016-06-12 55 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主席(發佈管理人員)在一個月內無法獲得。 –