DynamicPDF api用Java呈现PDF表单

时间:2011-07-01 00:03:26

标签: java dynamicpdf

我有PDF表格,我使用adobe acrobat pro版本9在javascript中添加一些隐藏的字段,按钮和一些验证。

另外我在java中使用dynamicPDF api(第一次)来读取PDF并预先填充一些带有一些值的字段(例如日期与当前日期和一些url字段)并将其绘制到字节数组中并发送回渲染

但是,渲染动态PDF时,我的表格变得混乱。我没有使用adobe添加完美的按钮。按钮显示时没有标签,如果我点击它就会显示*。不知道为什么。

我使用动态PDF作为FDF Merge的替代品。所以我想从dynamicPDF获得相同的功能,而且我是两个API的初学者。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这是我写的助手类和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 / caller(struts action)端----

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


byte[] pdfArray = mergedPDF.draw();

将此字节数组转发到要呈现的JSP上。 它没有正确显示按钮。