gpt4 book ai didi

java - iText:PDF 生成。一个模板。更多输入。一个输出

转载 作者:行者123 更新时间:2023-11-30 11:25:27 24 4
gpt4 key购买 nike

我尝试用 itext 生成 pdf。首先,我读入现有模板并在方法 stampFormular(Formular formular, PdfStamper stamper) 中标记公式。邮票方法有效。但是我有一个问题,就是向输出文件添加更多的公式。

我想为每个公式的 PDF 模板标记“黄色”。所以我尝试使用 document.add(),但这不起作用。所以我试着用 pdf writer 来做这个。但这不起作用。知道我如何用一个公式数据标记 pdf 模板,制作一个新页面并用下一个公式数据标记相同的 pdf 模板。

public static File createForm(List<Fomular> formulars) {
Document document = new Document();
File pdf = null;

document.open();

try {
PdfReader pdfTemplate = new PdfReader('YELLOW');
PdfStamper stamper = new PdfStamper(pdfTemplate,
new FileOutputStream("output.pdf"));
PdfWriter writer;
for (Formular f : formulars) {
stamper = stampFormular(f, stamper);
writer = stamper.getWriter();
writer.newPage();
}

stamper.close();
pdfTemplate.close();
pdf = new File("output.pdf");
Desktop.getDesktop().open(pdf);
} catch (DocumentException | IOException e) {
e.printStackTrace();
}
return pdf;
}

最佳答案

一些观察:

您不能从 PdfStamper 中获取 PdfWriter 对象,使用 newPage() 并期望它工作。这相当于打开你的汽车引擎盖并开始重新布线适合的 pipe ,但对发动机维护艺术一无所知。当您想向 stamper 添加新页面时,您应该使用 insertPage() 方法,如 documentation 中所述。 .

第二个观察:您没有告诉我们您是否在扁平化表单的内容。如果你这样做,那么很简单,只需使用 example mentioned in the documentation一切就绪。换句话说:将 PdfStamperPdfSmartCopy 相结合。特别是如果您反复使用相同的模板,PdfSmartCopy 会比 PdfCopy 提供更好的结果,原因在 chapter 6 中解释。 .

假设您的模板需要保持交互性,那么您可能会遇到问题,原因在该章中也有解释:具有特定名称的字段的不同可视化必须始终具有相同的值。例如:如果您的模板有一个名为 name 的字段,那么该字段在文档中的每次出现都必须具有相同的值。如果你不想这样,你需要重命名name,例如name1name2,等等......

过去需要使用 PdfCopyFields 完成需要保持交互的模板串联(参见文档)。在这里,文档有些过时了。在最新版本的 iText 中,我们现在在 PdfCopyPdfSmartCopy 中有一个方法 addDocument()。此方法允许您一次添加完整文档,同时保持交互性。

关于java - iText:PDF 生成。一个模板。更多输入。一个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20283952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com