gpt4 book ai didi

java - DynamicPDF api 在 Java 中呈现 PDF 表单

转载 作者:行者123 更新时间:2023-12-01 05:43:21 25 4
gpt4 key购买 nike

我有 PDF 表单,我使用 adobe acrobat pro 版本 9 添加了一些隐藏字段、按钮和一些 JavaScript 验证。

我还在java中使用dynamicPDF api(第一次)来读取该PDF并用一些值(例如日期与当前日期和一些url字段)预填充几个字段,并将其绘制到字节数组中并发送回渲染.

但是在渲染动态 PDF 时,我的表单变得困惑。我使用 adobe 添加的按钮没有完美显示。显示的按钮上没有标签,如果我单击它,则会显示 * 。不知道为什么。

我正在使用 Dynamic PDF 作为 FDF Merge 的替代品。因此,我希望 DynamicPDF 具有相同的功能,而且我对这两个 API 都是初学者。

有什么建议吗?

最佳答案

这是我编写和 PDF 的辅助类 ---

public class PDFMerge {

private MergeDocument document = null;



public PDFMerge(File template) throws Exception {

if (templatePdfFile == null) {
throw new Exception( );
document = new MergeDocument(template.getAbsolutePath(), new MergeOptions(true));
}


}

public MergeDocument mergePDF(String pdfformid, String url,
) {

Calendar cal = Calendar.getInstance();

if (document != null) {

//hidden fields on PDF form


if (document.getForm().getFields().getFormField("url_to_submit") != null) {
document.getForm().getFields().getFormField("url_to_submit")
.setValue(url);

}


//Date fields to prepopulate before rendered on browser

if (document.getForm().getFields().getFormField("date.mm") != null) {
document
.getForm()
.getFields()
.getFormField("date.mm")
.setValue(
String.valueOf(cal.get(Calendar.MONTH) + 1));

}

if (document.getForm().getFields().getFormField("date.dd") != null) {
.....

}

if (document.getForm().getFields().getFormField("date.yyyy") != null) {
....
}




}
}
//document is drawn into byte array in servlet to send to output stream.

return document;

}


}

在 servlet/调用者(struts 操作)方面 ----

PDFMerge pdfmerge = new PDFMerge(form.getTemplateFile());
MergeDocument mergedPDF = printTool.mergePDF(String
.valueOf(form.getFormId()), URL);


byte[] pdfArray = mergedPDF.draw();

该字节数组被转发到 JSP 上进行渲染。它无法正确显示按钮。

关于java - DynamicPDF api 在 Java 中呈现 PDF 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542353/

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