API DynamicPDF для рендеринга PDF-форм на Java - PullRequest
1 голос
/ 01 июля 2011

У меня есть PDF-формы, и я использовал Adobe Acrobat Pro версии 9, чтобы добавить к нему некоторые скрытые поля, кнопки и некоторую проверку в javascript.

Также я использую api dynamicPDF (первый раз) в java для чтениячто PDF и предварительно заполнить несколько полей с некоторыми значениями (например, дата с текущей датой и некоторые поля URL) и рисовать его в байтовом массиве и отправлять обратно для рендеринга.

Но при рендеринге динамический PDF портит мои формы,Это не показывает кнопки отлично, что я добавил, используя Adobe.Кнопки отображаются без метки на нем, и если я нажму, на нем отобразится *.Не знаю почему.

Я использую Dynamic PDF вместо FDF Merge.Поэтому я хочу, чтобы у dynamicPDF была одинаковая функциональность, и я абсолютно новичок в обоих API.

Есть предложения?

1 Ответ

0 голосов
/ 01 июля 2011

Это мой вспомогательный класс для записи и 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 для визуализации. Он не отображает кнопки правильно.

...