You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 01:55:32