我使用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不包含外观字符间距...
我的代码出了什么问题?
谢谢
发布于 2019-02-20 18:46:35
对于生成文本字段外观,iText 5.x仅使用来自DA默认外观字符串的字体、字体大小和颜色信息(以及仅当使用g、rg或k指令设置时的颜色信息),cf。AcroFields方法SplitDAelements,用于从DA字符串中提取信息。
因此,iText 5.x外观生成相当有限,尤其不支持字符间距。
一种可能的解决方法是让您在自己的代码中显式创建所有外观。
https://stackoverflow.com/questions/54749540
复制相似问题