如何用iTextSharp复制PDF表单字段样式生成文本标签?
问题:克隆PDF表单字段为带原字体样式的文本标签
需要将Acrofields.Item的字体、字号数据转换为Phrase/TextField的等效内容,实现把PDF表单字段克隆成文本标签,且无法使用iText7,只能用iTextSharp。场景包括发票每页显示开票日期、按模板标记字段添加发票行等。
当前实现方式
目前使用PdfStamper和ColumnText.ShowTextAligned添加文本标签,代码如下:
PdfStamper _stamper = ... AcroFields.Item field = _stamper.AcroFields.Fields["Name"] PdfDictionary fieldControlDict = field.GetWidget(0); PdfArray fieldRect = fieldControlDict.GetAsArray(PdfName.RECT); PdfNumber alignmentObj = fieldControlDict.GetAsNumber(PdfName.Q); Phrase phrase = new Phrase("Joe Bloggs"); ColumnText.ShowTextAligned(_stamper.GetOverContent(pageNumber), alignmentObj.IntValue, phrase, fieldRect.x, fieldRect.y, 0);
遇到的问题
上述方法能成功添加文本,但无法复制原字段的字体和字号,尝试用TextField和PdfFormField也没能解决。目前能通过Widget属性获取字段的矩形区域和对齐方式,但字体处理难度大:原字段的DA属性包含PostScript风格的字体指令(例如'/HELV 11 Tf 0 g'),不知道如何将其转换为可用于Phrase的字体对象,尤其没有完整字体映射表的情况下。
更新补充
已找到iText5 Java版5.5.11的API文档,需将其翻译成中文。
内容的提问来源于stack exchange,提问作者Symo
相关产品推荐
相关产品推荐

