iTextSharp的AcroField.SetFieldProperty问题

问题描述 投票:0回答:2

我已经AcroField:

AcroFields field = stamper.AcroFields;

我就是用这些BASEFONT和字体设置:

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究竟是如何申请

如果有人知道的一些事情或者能不能告诉我在某个地方,请让我知道。

c# itextsharp acrofields
2个回答
2
投票

如果您正在使用艾可现场处理,然后下面片段是有用的:

        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);
        }

1
投票

您正在使用SetFieldProperty了错误的参数:"12"不是字段属性。我假设你想改变字体和字体大小。这样做了这样的:

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

有可以使用的替代品;您可以定义为完整的形式替代字体:

field.AddSubstitutionFont(bf);

现在bf可以被用作用于所有领域的取代字体;你不必设置字段属性为每个单独的字段。

© www.soinside.com 2019 - 2024. All rights reserved.