0

我有 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

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

4

2 回答 2

3

如果您正在处理 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);
        }
于 2019-02-06T13:43:22.437 回答
1

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

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

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

field.AddSubstitutionFont(bf);

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

于 2015-09-03T05:50:16.560 回答