当前位置: 首页 > 知识库问答 >
问题:

使用iText 2.1.7合并大型PDF

郎聪
2023-03-14

我正在使用旧版本的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();
}

共有1个答案

阮炯
2023-03-14

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

 类似资料:
  • 我有一个项目是“从tree.java程序(清单8.1)开始,修改它,从一串字母(如a、B等)创建一个二叉树”由用户输入。每个字母都将显示在自己的节点中。构建树,使包含字母的所有节点都是叶子。父节点可以包含一些非字母符号,如。确保每个父节点正好有两个子节点。如果树不平衡,不要担心。”这本书给了我们一个如何开始的提示。“一种开始的方法是制作一组树(一组不相连的树被称为森林)将用户键入的每个字母放入一个

  • 我有一个大的pdf打印文件,它包含5544页,大约36MB大小。该文件由MS Word 2010创建,仅包含文本和每个信件/文档上的徽标。 我将它拆分为5544个文件,然后根据关键字合并成2770个字母。每个字母约为。140-145kb。 当我将所有的字母合并到一个新的pdf打印文件(仍然包含5544页)时,文件的大小增长到396MB。 所有文本提取、拆分和合并都是通过从PHP调用Apache P

  • 我有一个很大的netCDF(.nc)文件文件夹,每个文件都有相似的名称。数据文件包含时间、经度、纬度和月降水量变量。目标是获得每个月X年的平均月降水量。因此,最终我会得到12个值,代表每个纬度和长纬度的X年平均月降水量。多年来,每个文件都位于同一位置。每个文件以相同的名称开头,以“date.nc”结尾,例如: 结尾是年月。目前为止我所知道的是: 我得到一个KeyError: ('time ','经

  • 我是微软图形API的新手。我们的应用程序要求根据预期主题收集最新电子邮件,并收集电子邮件附件(CSV格式)。 当使用下面的查询时,但是使用2个GET请求时,这已经很好了: 首先是收集最新的电子邮件: https://graph.microsoft.com/v1.0/me/messages?$select=id,有附件 第二种是通过传递从第一个查询返回的id来收集附件: https://graph.

  • 我看了一个视频,学习如何将PDF文件合并成一个PDF文件。我试图修改一点代码,以便处理一个文件夹,其中有PDF文件主文件夹(Spyder)有,这是代码 我有一个名为的子文件夹进入主文件夹,在这个子文件夹中,我把PDF文件和子文件夹内的我创建了一个名为的文件夹。我得到了错误文件没有找到1.pdf虽然当打印的内循环,我得到了PDF名称。 错误的追溯

  • Java标准库中的大多数集合(如ConcurrentLinkedQueue、Concurrent LinkedDequeue和ConcurrntSkipListSet)的文档都附带以下免责声明: 注意,与大多数集合不同,size方法不是一个恒定时间的操作。由于这些集合的异步性质,确定元素的当前数量需要遍历元素,因此如果在遍历过程中修改了集合,可能会报告不准确的结果。 那是什么意思?为什么他们不能保