- - PR -
iTextでAcroFields使用時の日本語表示方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-03-14 15:28
昨日からいろんなサイトを巡っていますが、最終的に(?)ここで質問します。
iText-1.2.jar と iTextAsian.jar を利用しています。 BaseFontを利用した日本語表示はちゃんと動きました。 下記がBaseFontの使用例です。全く問題なくPDFファイルが生成できています。 Document document = new Document(PageSize.A4.rotate()); PdfWriter pw = PdfWriter.getInstance(document, new FileOutputStream("abc.pdf")); document.open(); BaseFont bf = BaseFont.createFont("HeiseiMin-W3", "UniJIS-UCS2-HW-H",false); Font font = new Font(bf, 10.5f); Paragraph para = new Paragraph("おはようございます。",new Font(bf, 20f)); para.setAlignment(Element.ALIGN_LEFT); document.add(para); document.close(); 次に、AcrobatProでPDFファイル(abc2.pdf)の中に テキストフィールドを一つ作成し、 そこに値を埋め込むことをやってみたいと考えています。 PdfReader reader = new PdfReader("abc2.pdf"); PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("abc3.pdf")); AcroFields form = stamp.getAcroFields(); form.setField("text1", "おはようございます。"); stamp.setFormFlattening(true); stamp.close(); おはよう〜ではなく「Hello」(英数字)とかならちゃんと動いたのですが、 上記「おはようございます。」だと何も表示されません。 1つめのソースのように BaseFontをどこかで指定できないかと考えていますが、 いまのところ手のうちようが無い状態です。 AcroFields(テキストフィールド)に日本語を埋め込んだことがある方、 あるいは、何らかの実現方法が思いつく方、いましたら教えてください。 参照元として、iTextのAcroFields使用例ページにリンクしておきます。 http://itextdocs.lowagie.com/tutorial/general/copystamp/index.html このなかの「Register」を参考にしてプログラムを行っています。 |
|
投稿日時: 2006-03-14 17:29
質問者本人の補足です。
stamp.setFormFlattening(true); の行をコメントアウトしたところ、 値として何も表示されないのはそのままですが、 「フィールドをハイライト表示」にチェックすれば値が全て出てきました。 (チェックを外すとまた消えます・・・) しかも「フィールドをハイライト表示」で値を表示させてから、 値を変更すると、(「おはよう〜」→「こんにちは」とか・・・) 今度は、チェックを外しても消えなくなりました・。・・ これはPDFファイル生成時点では、値が正しく埋め込まれていない状態。 ということなのでしょうか? 今のところ誰からも回答ないですね・・・・ |
|
投稿日時: 2006-03-15 11:44
またまた本人書込みで失礼します。
解決しましたので一応回答を掲載しておきます。 <解決方法> iText-1.2 を iText-1.4 にバージョンアップ! Acrobat のPDFバージョンと、iTextのPDFバージョンを合わせないと、 テキストフィールドへの値埋め込み処理が上手くいかないことがあるようです。 私の環境は今日現在下記のとおり・・・ ・Acrobat Pro 7.0 ・iText-1.4.jar 今後、同問題で悩む方がいましたらその際にお役に立てば幸いです。 |
1