我有PDF表单,我使用adobe acrobat pro version9添加了一些隐藏字段、按钮和javascript中的一些验证。
另外,我在java中使用dynamicPDF api (第一次)来读取该PDF,并预先填充一些字段的一些值(例如日期与当前日期和一些网址字段),并绘制成字节数组,并发送回渲染。
但是,当渲染动态PDF时,我的表单变得一团糟。它没有完美地显示我用adobe添加的按钮。显示的按钮上没有标签,如果我单击它,上面会显示*。不知道为什么。
我使用动态PDF作为FDF Merge的替代。所以我想从dynamicPDF获得相同的功能,并且我完全是两个API的初学者。
有什么建议吗?
发布于 2011-07-01 09:34:49
这是我要写的助手类和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上进行呈现。它不能正确显示按钮。
https://stackoverflow.com/questions/6542353
复制相似问题