-1

次のコードを使用して、フォーム フィールドにいくつかの値を入力します。

//------------------------------------------------ -------

PdfReader リーダー = 新しい PdfReader(in);

PdfStamper スタンパー = new PdfStamper(reader, new FileOutputStream(out));

AcroFields フォーム = Stamper.getAcroFields();

form.setField("txt_1", "TEST:ทดสอบ");

スタンパー.close();

リーダー.close();

//------------------------------------------------ -------

問題は、そのフィールドに焦点を合わせるまで、タイ語の文字が PDF リーダーに表示されないことです。

** 取得した出力ファイルを初めて開いたとき


フィールド名: テキスト:


フィールドに焦点を当てると結果は正しく、別のフィールドをクリックするとタイ語の文字が再び消えます


FieldName: Text:ทดสอบ</p>


誰でも助けてください。ありがとう

4

1 に答える 1

1

最初に PDF の生成中にチェコ語の文字を取得できないに対する私の回答を読んでください。それはチェコ文字に関するものですが、あなたの質問にも関連しています:

  1. UNICODE 表記を使用する代わりに、コードに西洋以外の文字を追加するという不適切なプログラミング手法を使用しています。
  2. タイ文字を書けるフォントを作成する必要があります (例: arialuni.ttf)。

それから私の本の第8章を読んでください。より具体的には、図 8.3 と図 8.4 を説明するテキスト。 Unicode 文字を含むテキスト フィールドの作成 図 8.3 では、上のドキュメントに、発生している問題が示されています。この場合、String西洋のテキストと中国語のテキストをフィールド値として追加しています。西洋のテキストが表示され、中国語のテキストは表示されません。2 番目と 3 番目のウィンドウは、フィールドに正しく入力するとどうなるかを示しています。 Unicode 文字を含むテキスト フィールドへの入力 図 8.3 では、韓国語のテキストを追加してみます。これは 1 番目と 3 番目のウィンドウでは失敗しますが、2 番目、3 番目、4 番目のウィンドウでは問題を解決しました。

私の本のコピーを所有していない場合は、スクリーン ショットに示されているすべての PDF を生成するTextFieldFontの例を試すと役立つ場合があります。

MS Arial Unicode を使用することにした場合、このフォントを代替フォントとして追加するソリューションを選択します。

AcroFields form = stamper.getAcroFields();
BaseFont unicode =
    BaseFont.createFont("c:/windows/fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
form.addSubstitutionFont(unicode);

もちろん、他のオプションもありますが、これは問題を解決する 1 つの方法です。

于 2014-11-14T16:26:28.210 に答える