Почему я получаю исключение NullPointterException с помощью PDField.setValue () из PDFBox 2.0.19? - PullRequest
2 голосов
/ 19 апреля 2020

Я пытаюсь изменить текст в поле файла PDF, но получаю исключение NullPointerException. Я использую PDFBox 2.0.19.

Файл загружается нормально, я могу, например, добавить страницу и сохранить новую на рабочем столе, но настройка значения поля продолжает падать.

Можете ли вы помочь мне, пожалуйста? Что я делаю не так?

public static void main(String args[]) throws IOException {
    File file = new File("C:/Users/Bondi/Desktop/karta.pdf");
    PDDocument pdDocument = PDDocument.load(file);
    PDDocumentCatalog pdDocumentCatalog = pdDocument.getDocumentCatalog();
    PDAcroForm pdAcroForm = pdDocumentCatalog.getAcroForm();
    if (pdAcroForm != null) {
        PDField pdField = (PDField) pdAcroForm.getField("imie_badacza");
        pdField.setValue("Badacz");
    }
    pdDocument.save("C:/Users/Bondi/Desktop/karta2.pdf");
    pdDocument.close();
}

Снимок экрана ошибки :

Иерархия полей моего pdf :

1 Ответ

1 голос
/ 20 апреля 2020

Вы должны использовать полное имя поля. Т.е. вместо

PDField pdField = (PDField) pdAcroForm.getField("imie_badacza");

используйте

PDField pdField = (PDField) pdAcroForm.getField("topmostSubform.Page1.imie_badacza");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...