API DynamicPDF для рендеринга PDF-форм на Java
У меня есть PDF-формы, и я использовал Adobe Acrobat Pro версии 9, чтобы добавить некоторые скрытые поля, кнопки и некоторые проверки в JavaScript.
Также я использую api dynamicPDF (первый раз) в java, чтобы прочитать этот PDF и предварительно заполнить несколько полей некоторыми значениями (например, date с текущей датой и некоторыми полями url) и рисовать его в байтовом массиве и отправлять обратно для рендеринга.
Но в то время как рендеринг динамического PDF портит мои формы. Это не показывает кнопки отлично, что я добавил, используя Adobe. Кнопки отображаются без метки на нем, и если я нажимаю, это показывает *
в теме. Не знаю почему.
Я использую Dynamic PDF в качестве замены FDF Merge. Поэтому я хочу, чтобы у dynamicPDF была та же функциональность, и я абсолютный новичок в обоих API.
Любое предложение?
1 ответ
Это мой вспомогательный класс для записи и 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;
}
}
На стороне сервлета / вызывающей стороны (действие распорок) ----
PDFMerge pdfmerge = new PDFMerge(form.getTemplateFile());
MergeDocument mergedPDF = printTool.mergePDF(String
.valueOf(form.getFormId()), URL);
byte[] pdfArray = mergedPDF.draw();
Этот байтовый массив передается на JSP для визуализации. Он не отображает кнопки правильно.