Я пытаюсь сгладить поля формы (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"));
Заполненный текст тоже пропал
Edit:
Создайте эти элементы формы с помощью Adobe Acrobat Pro
10.1.1
в существующих PDF-файлах через меню формы и просто сохраните PDF-файлы как sample5.pdf
и test.pdf
.
.