Сглаживание полей формы удаляет содержимое - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь сгладить поля формы (PDAcroForm.flatten()) в формате PDF, который на предыдущем этапе был заполнен из файла .xfdf. Ожидаемый результат - заменить редактируемые поля только текстом.

Однако я из PDF, где текст заполняется в форме ( output02.pdf ) после выравнивания, весь добавленный текст теперь полностью исчезает, поэтому вместо значений формы я получаю пробелы ( output03.pdf ).

Поместите полный пример на github , содержащий файлы PDF (входные и сгенерированные выходные данные), но здесь есть только часть сглаживания:

// in Main.java, function flatten()

PDDocument pdf_document = PDDocument.load(new File("output02.pdf"));  //from step before, merged & filled pdf files.

List<PDField> the_fields = new ArrayList<PDField>();
for (PDField field: pdf_document.getDocumentCatalog().getAcroForm().getFieldTree()) {
    the_fields.add(field);
}
System.out.println("Flattening fields: " + Arrays.stream(the_fields.toArray()).map(field -> ((PDField)field).getFullyQualifiedName()).collect(Collectors.joining(", ","[","]")));
pdf_document.getDocumentCatalog().getAcroForm().flatten(the_fields, true);
pdf_document.save(new File("output03.pdf"));

preview of pdf result Заполненный текст тоже пропал

Edit:
Создайте эти элементы формы с помощью Adobe Acrobat Pro 10.1.1 в существующих PDF-файлах через меню формы и просто сохраните PDF-файлы как sample5.pdf и test.pdf.

.

1 Ответ

2 голосов
/ 15 марта 2019

Это ошибка, исправленная с 2.0.5 два года назад .Из-за этой ошибки значения полей в файле xfdf были назначены как имена, а не как строки в записи / V (для значения) словаря полей.Потому что нечего показывать в потоке появления поля.Таким образом, ничего после выравнивания.

Всегда используйте последнюю версию PDFBox.Я использую плагин maven version во всех моих проектах.

...