Источник
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();
Выход
Your Company Name: Your Name: Address Line 1: Address Line 2: City, State, Zip Code: Client's Name: Invoice ID: Client: Address Line 1: Issue Date: Client: Address Line 2: PO Number: Client: City, State, Zip Code: Due Date: Subject: Item 1: Description: Item 1: Quantity: Item 1: Unit Price: Item 1: Amount: 0 Item 2: Description: Item 2: Quantity: Item 2: Unit Price: Item 2: Amount: 0 Item 3: Description: Item 3: Quantity: Item 3: Unit Price: Item 3: Amount: 0 Item 4: Quantity: Item 4: Unit Price: Item 4: Amount: 0 Item 4: Description: Item 5: Quantity: Item 5: Unit Price: Item 5: Amount: 0 Item 5: Description: Item 6: Quantity: Item 6: Unit Price: Item 6: Amount: 0 Item 6: Description: Subtotal: 0 Discount: Amount Due: 0 Project Notes: Picked up _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, и это тоже не сработало. Также я запустил код с полями. получить раскомментированный код и получить ошибку компиляции - получить строку, не определенную для типа Acrofields.
Также есть простой способ увеличить длину значения Your Company Name
, когда я создаю новый файл PDF. Сейчас его 21, я бы хотел, чтобы это было около 30 символов.
Вы печатаете
System.out.println( fldName + ": " + fields.getField( fldName ) );}
Таким образом, на выходе
Your Company Name:
Your Name:
[...]
(at least I assume that the line breaks are there, you dropped them in your question text)
указывает, что имена полей - "Your Company Name"
и "Your Name"
, а не "Your Company Name:"
и "Your Name:"
и т. д.
Таким образом, вы должны удалить двоеточия из вызовов настройки поля
fields.setField("Your Company Name:", "Changed");
fields.setField("Project Notes:", "Blah...Blah");