0

私は、Java コードによって埋められた値を含む pdf ファイル/フォームを読み取る必要があるプロジェクトに取り組んでいます。

form.setField("permitnumber", p.getApplicationorno());
            form.setField("amountpaid", p.getAmount_app());
            form.setField("estimatedfeet", "56");
            form.setField("receiptnumber", "123415");
            form.setField("validity", "5");

今私の問題は、PDFフォームのフィールドに設定された値がAdobe PDF Readerでは完全に機能しましたが、ICEPdf Viewerでは機能しませんでした。ここで何が欠けていますか?PDF フォームの値を ICEPdf で表示できないのはなぜですか?

4

1 に答える 1

0

iTextを使用してフィールド値を設定しているときに、afあなたのAcroFieldsインスタンスである場合は、やってみてください

af.setGenerateAppearances(true);

値を設定する前に。


PDF 仕様ISO 32000-1は、NeedAppearancesフラグを定義しています。表 218 –インタラクティブ フォーム ディクショナリのエントリ. trueに設定されている場合、PDF ビューアは、フォーム フィールドの外観ストリームを作成する必要があることを認識します。

iText はそのフラグを解釈し、フラグがtrueでない場合、フォームへの入力中に外観ストリームのみを作成します( true の場合、ビューアはとにかくそのような外観を再作成することが期待されます)。

少なくとも、そのフラグをtrueに設定して PDF フォームを作成するために使用されます。Adobe Reader はフラグを尊重し、true の場合は外観を作成します。おそらく、PDF ビューアはフラグを尊重しません。おそらく、文書内に外観が既に存在することを常に想定しています。

を使用setGenerateAppearances(true)すると、アピアランス ストリームの生成を強制できます。上記の仮定が正しければ、これで問題が解決するはずです。

于 2015-03-09T08:33:26.377 に答える