Я создаю PDF с нуля, используя PDFbox V2, я хочу создать PDTextField, который отображается на другой странице и имеет одинаковое значение при его заполнении.
Я уже читал пример, предоставленный Тилманом вДок, но у меня есть конкретная проблема: я создаю файл PDF из JSON, который содержит информацию об элементах PDF, поэтому, когда я анализирую JSON, я еще не знаю, появляется ли текстовое поле на разных страницах или только на одной.
вот функция, которая создает textField на моем PDF.
@Override
public void writeElement(CustomInputField element, PDDocument document,
PDPage page, PDAcroForm acroForm) throws IOException {
String inputFieldKey = element.getKey();
PDTextField myTextBox = (PDTextField) acroForm.getField(inputFieldKey);
if(myTextBox == null) { // if pdtexField don't exist
myTextBox = new PDTextField(acroForm);
myTextBox.setMultiline(true);
myTextBox.setPartialName(inputFieldKey);
myTextBox.setAlternateFieldName(element.getTooltip());
acroForm.getFields().add(myTextBox);
System.out.println(myTextBox);
}
List<PDAnnotationWidget> widgets = new ArrayList<>();
PDAnnotationWidget widget = new PDAnnotationWidget();
PDRectangle rect = new PDRectangle(element.getLeft(), page.getMediaBox().getHeight() - (element.getTop() + element.getHeight()), element.getWidth(),
element.getHeight());
widget.setRectangle(rect);
widget.setPage(page);
widget.setParent(myTextBox);
widget.setPrinted(true);
page.getAnnotations().add(widget);
widgets.add(widget);
myTextBox.setWidgets(widgets);
}
Вызов методов
private void writeElementsInPage(PDDocument document, PDPage page, AbstractPDFObject currentElement, PDAcroForm acroForm) throws IOException {
switch (ElementEnum.resolveElment(currentElement.getClass())) {
case Rectangle:
rectangleService.writeElement((CustomRectangle) currentElement, document, page, null);
break;
case Image:
imageService.writeElement((CustomImage) currentElement, document, page, null);
break;
case CheckBox:
checkBoxService.writeElement((CustomInputCheckBox) currentElement, document, page, acroForm);
break;
case InputField:
inputFieldService.writeElement((CustomInputField) currentElement, document, page, acroForm);
break;
default:
System.err.println("UNKNOWN Element\t" + currentElement.getClass().getCanonicalName());
break;
}
}
PDF, который я получаю, имеет последнее появление на Adobeчитатель: ![enter image description here](https://i.stack.imgur.com/V998c.png)
, но в Chrome PDF-форма отображается на всех страницах:
![enter image description here](https://i.stack.imgur.com/giaU7.png)
thisпроблема возникает на всех элементах multi acroform, которые я добавляю в pdf.