我使用iTextSharp 5.5.13创建带有文本AcroFields的pdf文件,然后在第二步中编辑pdf,以一些值填充AcroFields。
对于某些字段,我必须设置字符间距,因此我使用CreateAppearance
方法。这是代码:
var appearance = writer.DirectContent.CreateAppearance(box.Width, box.Height);
appearance.SetFontAndSize(baseFont, obj.FontSize);
appearance.SetColorFill(new iTextSharp.text.BaseColor(obj.Color));
appearance.SetCharacterSpacing(obj.CharSpacing);
formField.DefaultAppearanceString = appearance;
formField.SetAppearance(iTextSharp.text.pdf.PdfAnnotation.APPEARANCE_NORMAL, appearance);
writer.AddAnnotation(formField);
此代码可产生预期的pdf结果,并在可编辑字段中具有良好的字符间距。
问题是当我编辑pdf文件以填充AcroFields时:
pdfStamper.FormFlattening = true;
pdfStamper.AcroFields.GenerateAppearances = true;
pdfStamper.AcroFields.SetField(fieldName, fieldValue);
生成的拼合pdf不能保持外观字符间距...
我的代码怎么了?
谢谢
答案 0 :(得分:1)
对于生成文本字段外观,iText 5.x仅使用 DA 默认外观字符串中的字体,字体大小和颜色信息(仅当使用 g设置时才使用颜色信息)。 , rg 或 k 说明),请参见。 AcroFields
方法SplitDAelements
,该方法用于从 DA 字符串中提取信息。
因此,iText 5.x外观的生成非常有限,特别是不支持字符间距。
一种可能的解决方法是让您在自己的代码中显式创建所有外观。