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");