PDFBox: заменить текстовый заполнитель на поле формы подписи - PullRequest
0 голосов
/ 14 марта 2019

Сначала позвольте мне сказать, что я новичок в 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.Должны ли элементы формы всегда располагаться абсолютно?Можно ли найти заполнитель абзаца и заменить его виджетом поля подписи?Могу ли я сдвинуть последующее содержимое на страницу, чтобы учесть разницу в высоте между полем подписи и его заполнителем?Если так, как можно справиться с переполнением страницы?

Большое спасибо.

...