首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pdfStamper.AcroFields.SetField不保留外观设置

pdfStamper.AcroFields.SetField不保留外观设置
EN

Stack Overflow用户
提问于 2019-02-18 22:33:50
回答 1查看 541关注 0票数 1

我使用iTextSharp 5.5.13创建带有文本AcroFields的pdf文件,在第二步中编辑pdf,用一些值填充AcroFields。

对于某些字段,我必须设置字符间距,因此我使用CreateAppearance方法。代码如下:

代码语言:javascript
复制
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时:

代码语言:javascript
复制
pdfStamper.FormFlattening = true;
pdfStamper.AcroFields.GenerateAppearances = true;
pdfStamper.AcroFields.SetField(fieldName, fieldValue);

生成的展平的pdf不包含外观字符间距...

我的代码出了什么问题?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 18:46:35

对于生成文本字段外观,iText 5.x仅使用来自DA默认外观字符串的字体、字体大小和颜色信息(以及仅当使用grgk指令设置时的颜色信息),cf。AcroFields方法SplitDAelements,用于从DA字符串中提取信息。

因此,iText 5.x外观生成相当有限,尤其不支持字符间距。

一种可能的解决方法是让您在自己的代码中显式创建所有外观。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54749540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档