java - Itext7 - 在单个 pdf 上编写多个文档
问题描述
我正在一个 pdf 上编写多个 PdfDocument。PdfDocument 是通过填充不同模板的 PdfAcroForm 生成的。我的解决方案确实有效,但我认为它不是很有效。有没有更有效的方法来获得相同的结果?
ByteArrayOutputStream globalBaos = new ByteArrayOutputStream();
PdfDocument pdfDocGlobal = new PdfDocument(new PdfWriter(globalBaos));
for (Documento document : docs) {
PdfReader reader = new PdfReader(document.getPath());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfWriter writer = new PdfWriter(baos);
PdfDocument pdfDoc = new PdfDocument(reader, writer);
Document doc = new Document(pdfDoc);
[.... populate pdfDoc ]
doc.close();
pdfDoc.close();
baos.close();
//read again the closed document to copy it in the globalBaos
PdfDocument dr = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
dr.copyPagesTo(1, dr.getNumberOfPages(), pdfDocGlobal);
dr.close();
}
pdfDocGlobal.close();
FileOutputStream output = new FileOutputStream(FILE_OUTPUT);
output.write(globalBaos.toByteArray());
output.close();
globalBaos.close();
解决方案
推荐阅读
- django - PasswordResetDoneView 未在 Django 中使用自定义模板
- c++ - 为什么这仍然执行甚至设置为 nullptr
- roxygen2 - 如何格式化类似于参数列表的 roxygen2 返回列表?
- java - 是否可以使用jsp登录表单作为spring security的自定义登录表单
- python - 使用 json 从节点到 python 的通信给了我错误
- java - Java、Maven、JSP、JPA - java.lang.NumberFormatException:对于输入字符串:“id”
- c# - 为什么在 .NET 方法注释中使用数字字符引用?
- c - PIE 文件在链接期间是否提供了虚拟内存地址?
- json - 根据 JSON 标准对某些 tableView 行应用复选标记
- android-studio - 如何阻止 AndroidStudio 覆盖 .idea/codeStyles/Project.xml