java - 如何填充现有 PDF 的表单,然后使用 itext 将其添加到新 PDF

标签 java pdf itext

我正在使用以下代码

PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields form = stamper.getAcroFields();
form.setField("name", "John");
stamper.setFormFlattening(true);
stamper.close();
reader.close();
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest2));
document.open();
PdfContentByte cb = writer.getDirectContent();
//Loading the filled form again as a file
PdfReader reader2 = new PdfReader(dest);
PdfImportedPage page = writer.getImportedPage(reader2, 1);
document.newPage();
cb.addTemplate(page, 0, 0);
document.newPage();
document.add(new Paragraph("my timestamp"));
document.close();

这里我再次加载填充的文件以添加到新的pdf文件中,如何将填充的pdf从内存添加到新的pdf中,而无需再次加载为文件。

最佳答案

how to add the filled pdf to a new pdf from memory without loading as a file again.

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));

FileOutputStream 替换为 ByteArrayOutputStream 实例。

然后在

PdfReader reader2 = new PdfReader(dest);

使用 PdfReader 构造函数接受字节数组,并从 ByteArrayOutputStream 实例向其提供字节数组。

关于java - 如何填充现有 PDF 的表单,然后使用 itext 将其添加到新 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51485237/

相关文章:

c# - ASP.net C# GridView 到 html 表不工作

asp.net - 复选框未在 PDF 中使用 iTextSharp 进行检查

java - 如何以编程方式和基于 IP 的方式限制对我的 .war 文件的访问?

java - 单元格内的 iText 嵌套表格

Java:JLS第5.2节赋值转换

c# - 在 C# 中打印 PDF

c# - WKHTMLTOPDF 不呈现 Base64 图像

java - ITextRenderer 在所有 pdf 文件中重复相同的标题

Java 和单词 "new"

java - 迭代 XML 中声明的每个小部件并在 java 和 android 开发中执行操作