1

PDFフォームがあり、adobe acrobat proバージョン9を使用して、隠しフィールド、ボタン、およびjavascriptでの検証を追加しました。

また、Java で dynamicPDF api (初めて) を使用してその PDF を読み取り、いくつかのフィールドにいくつかの値 (たとえば、現在の日付といくつかの URL フィールドを含む日付) を事前入力し、それをバイト配列に描画してレンダリングに送り返します。

しかし、動的 ​​PDF のレンダリング中にフォームが台無しになります。adobeを使用して追加したボタンが完全に表示されません。ボタンはラベルなしで表示され、クリックすると表示*されます。理由がわからない。

FDF Merge の代わりに Dynamic PDF を使用しています。したがって、dynamicPDF と同じ機能が必要であり、両方の API の初心者です。

なにか提案を?

4

1 に答える 1

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;

    }


}

サーブレット/呼び出し元 (struts アクション) 側 ----

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


byte[] pdfArray = mergedPDF.draw();

このバイト配列は、JSP に転送されてレンダリングされます。ボタンが正しく表示されません。

于 2011-07-01T01:34:49.453 に答える