使用PDFBox 2.0.2拆分PDF会生成非常大的PDF文档

时间:2016-06-12 06:11:25

标签: pdfbox

我想使用命令

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

将一个PDF拆分为许多其他PDF。但我发现存在一个问题:PDF分裂是&#34; ActiveMQ In Action(Manning-2011).pdf&#34;这是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大!我该如何防止这种情况?

1 个答案:

答案 0 :(得分: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;
}