首页 > 解决方案 > 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();

标签: javaitext7

解决方案


推荐阅读