我有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
如果有人对此有所了解或可以将我带到某个地方,请告诉我。
答案 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);
}