2016-10-17 7 views
0

PDFBoxとGroovyを使用して複数ページのドキュメントを作成しようとしています。 私はいくつかのフォームのテキストフィールドを含むテンプレート文書を持っており、新しい文書を作成するたびにプログラムはこのテンプレートを使用します。ページがクローンされると、PDFBoxはフォームフィールドを省略します

私の問題は、新しい文書を作成しようとすると、新しい文書のいくつかのフォームフィールドが見つからないということです。私はFoxit PhantomPDFを使用しています。視覚的には、欠落しているフィールドを見ることはできません。私が見る他のものは大丈夫です。ここで

は私のコードです:ここでは

static void initiatePdf() { 
     // Initiate a new PDF Box object and get the acro form from it 
     File file = new File(Constants.EMPTY_DOC) 
     PDDocument tempDoc 

     Evaluator evaluator = new Evaluator() 
     int numPages = evaluator.getNumOfPagesRequired(objects) 

     for(int i = 0; i < numPages; i++) { 
      tempDoc = new PDDocument().load(file) 

      PDDocumentCatalog docCatalog = tempDoc.getDocumentCatalog() 
      PDAcroForm acroForm = docCatalog.acroForm 

      PDPage page = (PDPage) docCatalog.getPages().get(0) 

      document.addPage(page) 
     } 

     document.save(Constants.RESULT_FILE) 
     document.close() 
    } 

は私の問題を描写するのに役立ちます画像です。これはテンプレートです:

これは私がティルマン・ハウスハーの助けを借りて、この問題を解決するために管理し、新しいpdfファイル

+1

目的のAcroformのフィールドは決して設定しません。目的のPDFにAcroformエントリがありません。注釈ウィジェットのリンク先ページをページに合わせていません。同じ位置にあるが異なるページのすべてのフィールドが「接続されている」かどうかは説明していません。また、(関連性のない) 'new PDDocument()。load(file)'を 'PDDocument.load(file)'(静的メソッド)に変更します。 –

+1

送信元と送信先のPDFを共有すると便利です。 –

答えて

0

です。 forループの後にあるコードを次に示します。

PDAcroForm acroForm = new PDAcroForm(document, acroFormDict); 
acroForm.setFields(fields) 
acroForm.setDefaultResources(res); 

PDDocumentCatalog catalog = document.getDocumentCatalog(); 
catalog.setAcroForm(acroForm); 
関連する問題