2017-11-25 13 views
0

PDFBOXに問題があります。私のhtmlフィールドからPDFBOX文書を作成

だから私は、簡単なコード作成:コメント欄の下のコードが正しくdoesntの仕事「/フィールドを埋める」だから、なぜ私を教えてください

public class DelegationsPdf{ 
public Delegations getPDF(Delegations delegations) throws IOException{ 

    PDDocument delegation = new PDDocument(); 
    PDDocumentCatalog catalog = delegation.getDocumentCatalog(); 
    PDAcroForm pdAcroForm = catalog.getAcroForm(); 

    PDPage page = new PDPage(); 
    delegation.addPage(page); 
    page = delegation.getPage(0); 

    PDPageContentStream content = new PDPageContentStream(delegation, page); 
    content.beginText(); 
     content.setFont(PDType1Font.TIMES_ROMAN, 20); 
     content.setLeading(14.5f); 
     content.newLineAtOffset(275, 750); 
     content.showText("Delegations"); 
    content.endText(); 

    content.beginText(); 
     content.newLineAtOffset(50 ,650); 
     content.setFont(PDType1Font.TIMES_ROMAN, 12); 
     content.showText("Worker:"); 
    content.endText(); 

    // FILL THE FIELD 
    content.beginText(); 
     PDField name = pdAcroForm.getField(delegations.getName()); 
     content.newLineAtOffset(100 ,650); 
     content.setFont(PDType1Font.TIMES_ROMAN, 12); 
      pdAcroForm.getFields().add(name); 
    content.endText(); 

    content.close(); 
    delegation.save("C:/delegation.pdf"); 
    delegation.close(); 
    return delegations; 
} 

を?私の代表団クラスからの名前に関する情報を取得します。手伝って頂けますか?私はこれを実行し、ボタンをクリックすると、私はNULLとのエラーがあります。

+2

もちろんnullです。 'pdAcroForm.getField(delegations.getName());'はドキュメントにフィールドがないので何も返しません。あなたのコードは混乱しています。 PDDocumentオブジェクトは、 "document"または "delegationDocument"という名前である必要がありますが、 "delegation"ではありません。 PDFieldは "名前"ではなく "フィールド"と呼ばれるべきです。 –

+1

https://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/interactive/form/を見ることをお勧めします。これはフォームの作成方法を示しています。 –

+0

ああ、私はフィールドを追加する必要があることを理解しました。名前は私によって変えられました、何が間違っているかを知りたかったからです。 最初に、テンプレートを作成したときにフォームを作成してそこに追加する必要があります(apache svn-FillFormFieldの例から)。しかし、どのように各フィールドの位置を追加できますか? – Kondziowsky

答えて

1

最後に、問題が解決しました。

まずは、HTMLフォームから記入したい値を「ダウンロード」するときに、pdfboxにフィールド(フォーム)を作成して記入する必要があることを知っておく必要がありました。

第2に、特殊文字(UTF 8)にPDType0Font.load()を使用する必要があります。

ありがとうございます。

関連する問題