java - 使用 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();
}
这是正确的方法吗?在浏览一定数量的页面时,有什么暗示会破坏吗?没有抛出异常或任何东西。
解决方案
对于任何好奇的人来说,这个问题与 iText 无关,而是负责从 iText 返回响应的代码。
推荐阅读
- java - 如何在表中包含搜索/过滤器并在 Java SpringBoot 中包含分页?
- php - 使用 strftime() 创建的德语日期内的字符编码
- c# - 比较列表中的一个元素和下一个元素,如果它们相同,则在第二个列表中添加相应的索引元素值
- xslt - XSLT 可以执行 XML 解码然后处理结果吗?
- wordpress - 如何获取用户密码以链接到 WooCommerce / WP Job Manager 帐户?
- inno-setup - 即使在指定 ArchitecturesInstallIn64BitMode 后,Inno Setup 也会以 32 位启动
- r - 替换包含特定子字符串的变量
- matlab - 在 Matlab 中为绘图创建季度日期向量
- java - 使用 Beanshell 引用 testng.xml 中定义的参数
- sql-server - 在 SQL Server 中使用 XML PATH 命令将多个值组合到一个单元格中