使用 Itext 填充 PDF 字段



Source

try { 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outname)); 
AcroFields fields = stamper.getAcroFields();
// fields.get("Your Company Name:", "Changed");
// fields.get("Project Notes:", "Changed");
fields.setField("Your Company Name:", "Changed");
fields.setField("Project Notes:", "Blah...Blah");
Set<String> fldNames = fields.getFields().keySet();
for (String fldName : fldNames) {
System.out.println( fldName + ": " + fields.getField( fldName ) );
}     
stamper.close();

输出

您的公司名称: 您的姓名: 地址行 1: 地址行 2: 城市、州、邮政编码: 客户姓名: 发票 ID: 客户: 地址行 1: 签发日期: 客户: 地址行 2: PO 编号: 客户: 城市、州、邮政编码: 截止日期: 主题: 项目 1: 描述: 项目 1: 数量: 项目 1:

单价: 项目 1: 金额: 0 项目 2: 描述: 项目 2: 数量: 项目 2: 单价: 项目 2: 金额: 0 项目 3: 描述: 项目 3: 数量: 项目 3: 单价: 项目 3: 金额: 0 项目 4: 数量: 项目 4: 单价: 项目 4: 金额: 0 项目 4: 描述: 项目 5: 数量: 项目 5: 单价: 项目 5: 金额: 0 项目 5: 描述: 项目 6: 数量: 项目 6: 单价: 项目 6: 金额: 0 项目 6: 描述: 小计: 0 折扣: 应付金额: 0 项目说明: 提货 _JAVA_OPTIONS: -Xmx512M

我希望Your Company Name:值为"已更改",Project Notes:字段值为"Blah...Blah"

我已经在其他几个项目中运行了这段代码,但由于某种原因它不起作用。

环境

JARS - Itext 5.5.10, 5.4.1 env - Eclipcse (Kleeper) 
last modified - May 1, 2018 at 11:43:26 AM

我认为我一直在研究不同的项目版本。我看了类似的问题,他们使用了setAttributes,这也不起作用。我也在字段中运行了代码。获取未注释的代码并收到编译错误 - 获取 Acro 字段类型的未定义字符串。

还有一种简单的方法可以在我创建新的PDF文件时延长Your Company Name值长度。目前它的 21 我希望它大约是 30 个字符。

你打印

System.out.println( fldName + ": " + fields.getField( fldName ) );}     

因此,输出

Your Company Name: 
Your Name: 
[...]

(至少我假设换行符在那里,你把它们放在你的问题文本中(

表示字段名称"Your Company Name""Your Name",而不是"Your Company Name:""Your Name:"等。

因此,您应该从字段设置调用中删除冒号

fields.setField("Your Company Name:", "Changed");
fields.setField("Project Notes:", "Blah...Blah");

最新更新