【问题标题】:iTextSharp - acroform field encodingiTextSharp - acroform 字段编码
【发布时间】:2012-04-22 20:10:30
【问题描述】:

我正在尝试使用 iTextSharp 填写 AcroForm 的文本字段。 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");

但是,当我在 Acrobat Reader 中打开 Filled_form.pdf 时,除非我手动编辑该字段(例如,我手动将一个字符附加到该字段),否则 Unicode 字符是不可见的。

我还尝试通过以下方式设置字段的字体:

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

然后,当我在 Acrobat Reader 中打开 Filled_form.pdf 时,一切看起来都很好,除非我手动编辑该字段。之后,非 unicode 字符消失(它们变为空格)。它们在字段中,因为如果我通过 CTRL + C 复制字段的全部内容并将其粘贴到记事本,我可以看到所有字符。

请指教。我希望无需手动编辑字段即可查看字段中的所有字符,当然在手动编辑后我希望没有字符消失。

谢谢

【问题讨论】:

    标签: encoding itextsharp


    【解决方案1】:

    在创建 PdfStamper 后设置 SubstitutionFont:

    stamper.AcroFields.AddSubstitutionFont(myFont.BaseFont);
    

    【讨论】:

    • Acrobat 阅读器能够在同一文档上设置 Unicode 字段值,而无需使用替代字体。难道没有更好的方法来解决这个问题吗?
    • 当您展平文档时,设置替换字体似乎也不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多