首页 > 解决方案 > 使用 iText 2.1.7 合并大型 PDF

问题描述

我正在使用旧版本的 iText (2.1.7) 来合并 PDF。因为那是我可以使用的 MPL 下的最后一个版本。我无法改变这一点。

无论如何。我正在尝试合并多个 PDF。一切似乎都正常,但是当我浏览大约 1500 页时,生成的 PDF 无法打开(表现得好像它已损坏)

这就是我的做法:

private byte[] mergePDFs(List<byte[]> pdfBytesList) throws DocumentException, IOException {
    Document document = new Document();
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    PdfCopy copy = new PdfCopy(document, outputStream);
    document.open();

    for (byte[] pdfByteArray : pdfBytesList) {
        ByteArrayInputStream readerStream = new ByteArrayInputStream(pdfByteArray);
        PdfReader reader = new PdfReader(readerStream);

        for (int i = 0; i < reader.getNumberOfPages(); ) {
            copy.addPage(copy.getImportedPage(reader, ++i));
        }

        copy.freeReader(reader);
        reader.close();
    }

    document.close();

    return outputStream.toByteArray();
}

这是正确的方法吗?在浏览一定数量的页面时,有什么暗示会破坏吗?没有抛出异常或任何东西。

标签: javapdfitext

解决方案


对于任何好奇的人来说,这个问题与 iText 无关,而是负责从 iText 返回响应的代码。


推荐阅读