Код: Выделить всё
revЯ попробовал подход ниже, который позволяет создать только одно подпись и его виджет и предусмотрено для AddSignature . Этот подход, основанный на ранее упомянутом решении, но, похоже, библиотека не ведет себя правильно. Все визуальные марки подписи в конечном итоге разделяют одно и то же место, хотя для разных страниц указаны разные позиции. Кроме того, при размещении нескольких видимых подписей на одной и той же странице видно только последний.
Код: Выделить всё
PDSignature pdSignature = new PDSignature();
...
this.pdDocument.addSignature(pdSignature);
removeSignatureField(acroForm, pdSignature);
PDSignatureField signatureField = new PDSignatureField(acroForm);
signatureField.setValue(pdSignature);
PDAnnotationWidget widget = signatureField.getWidgets().get(0);
for (SignatureDefinition signatureDefinition : this.signatureDefinitions) {
...
addSignatureField(signatureField, widget, this.pdDocument, pdPage, rect, pdSignature);
}
Код: Выделить всё
void addSignatureField(PDSignatureField signatureField, PDAnnotationWidget widget, PDDocument pdDocument, PDPage pdPage, PDRectangle rectangle, PDSignature signature) throws IOException {
PDAcroForm acroForm = pdDocument.getDocumentCatalog().getAcroForm();
List acroFormFields = acroForm.getFields();
// PDSignatureField signatureField = new PDSignatureField(acroForm);
// signatureField.setValue(signature);
PDAnnotationWidget widget = signatureField.getWidgets().get(0);
acroFormFields.add(signatureField);
widget.setRectangle(rectangle);
widget.setPage(pdPage);
...
Подробнее здесь: https://stackoverflow.com/questions/795 ... x-while-ma