Сначала позвольте мне сказать, что я новичок в PDFBox и соответствующем формате PDF.
У меня есть входящий PDF (преобразованный из HTML) , который содержит заполнитель для поля подписи.Я могу создать PDAcroForm
и подпись PDSignatureField
.Кроме того, я могу абсолютно позиционировать форму на странице.Я пытаюсь понять, как найти заполнитель текста и закрепить форму в этом месте ...
Вот мой сокращенный код:
try (
final PDDocument document = PDDocument.load(context.getInboundPDF());
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream()
) {
final PDPage page = document.getPage(0);
final PDAcroForm acroForm = new PDAcroForm(document);
document.getDocumentCatalog().setAcroForm(acroForm);
final PDSignatureField signatureField = new PDSignatureField(acroForm);
acroForm.getFields().add(signatureField);
final PDAnnotationWidget widget = signatureField.getWidgets().get(0);
final PDRectangle rectangle = new PDRectangle(50, 650, 200, 50);
widget.setRectangle(rectangle);
widget.setPage(page);
page.getAnnotations().add(widget);
document.save(outputStream);
context.setOutboundPDF(outputStream.toByteArray());
} catch(final Exception e) {
LOG.error(e.getMessage(), e);
}
Я понимаю, что абсолютное позиционированиерезультаты измерений размеров объекта PDRectangle
.Должны ли элементы формы всегда располагаться абсолютно?Можно ли найти заполнитель абзаца и заменить его виджетом поля подписи?Могу ли я сдвинуть последующее содержимое на страницу, чтобы учесть разницу в высоте между полем подписи и его заполнителем?Если так, как можно справиться с переполнением страницы?
Большое спасибо.