3

AcroForm のテキスト フィールドに iTextSharp を入力しようとしています。Acroform テキストフィールドは、次のコードによって iTextSharp によっても作成されました。

TextField Field = new TextField(OutputWriter, FieldPos, "MyField");
OutputWriter.AddAnnotation(Field.GetTextField()); // OutputWriter is writing to form.pdf

このコードを使用してフォームに入力します。

PdfReader reader = new PdfReader("form.pdf");
PdfStamper filledOutForm = new PdfStamper(reader, new FileStream("filled_form.pdf", FileMode.Create));

AcroFields form = filledOutForm.AcroFields;
form.SetField("MyField", "some unicode data");

ただし、フィールドを手動で編集しない限り、filled_form.pdf を Acrobat Reader で開くと、Unicode 文字は表示されません (たとえば、フィールドに手動で文字を追加します)。

また、次の方法でフィールドのフォントを設定しようとしました:

BaseFont fieldFontRoman = BaseFont.CreateFont(@"C:\Windows\Fonts\times.ttf",
                                BaseFont.IDENTITY_H,
                                BaseFont.EMBEDDED);
form.SetFieldProperty("MyField", "textfont", fieldFontRoman, null);

次に、フィールドを手動で編集しない限り、filled_form.pdf を Acrobat Reader で開くと、すべて問題なく表示されます。その後、Unicode 以外の文字は消えます (空白に変わります)。CTRL + C でフィールドの内容全体をコピーしてメモ帳に貼り付けると、すべての文字が表示されるため、フィールドに表示されます。

お知らせ下さい。フィールドを手動で編集する必要なく、フィールド内のすべての文字を表示したいと思います。もちろん、手動で編集した後、文字が消えないようにしたいと思います。

ありがとうございました

4

1 に答える 1

6

PdfStamper を作成した後、SubstitutionFont を設定します。

stamper.AcroFields.AddSubstitutionFont(myFont.BaseFont);
于 2012-04-23T04:05:02.923 に答える