iTextSharp AcroField.SetFieldProperty问题

时间:2015-09-02 13:53:07

标签: c# itextsharp acrofields

我有AcroField:

AcroFields field = stamper.AcroFields;

我正在使用这些BaseFont和Font设置:

string fontName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "times.ttf");
BaseFont bf = BaseFont.CreateFont(fontName, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf,12);

当我设置 field.SetFieldProperty(fieldName,“12”,12.0f,null); 并尝试导出我的pdf时,所有写在西里尔文上的文本都没有显示。我尝试了几种不同的方法来解决这个问题,但没有办法帮助我。

我不确定这些字体设置究竟适用于AcroFields

如果有人对此有所了解或可以将我带到某个地方,请告诉我。

2 个答案:

答案 0 :(得分:2)

您使用SetFieldProperty的参数错误:"12"不是字段属性。我假设您要更改字体和字体大小。这就是这样做的:

field.setFieldProperty(fieldName, "textfont", bf, null);
field.SetFieldProperty(fieldName, "textsize", 12f, null);

您可以使用其他替代方案;您可以为完整表单定义替换字体:

field.AddSubstitutionFont(bf);

现在bf可以用作所有字段的替换字体;您不必为每个单独的字段设置字段属性。

答案 1 :(得分:1)

如果您要处理Acro字段,则下面的代码段很有用:

        var memStream = new MemoryStream();
        var stamper = new PdfStamper(reader, memStream);
        AcroFields form = stamper.AcroFields;
        foreach(string key in form.Fields.Keys)
        {
            form.SetFieldProperty(key, "textsize", (float)7, null);
            form.SetFieldProperty(key, "textfont", bfArialUniCode, null);
            form.RegenerateField(key);
        }