Заполнение полей PDF с помощью Itext

Источник

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 символов.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
Включение UTF-8 в jsPDF с помощью Angular
Включение UTF-8 в jsPDF с помощью Angular
Привет, разработчики, я предполагаю, что вы уже знаете, как экспортировать pdf через jsPDF. Если ответ отрицательный, то вы можете ознакомиться с моей...
1
0
34
1

Ответы 1

Вы печатаете

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

Другие вопросы по теме