[ 
https://issues.apache.org/jira/browse/PDFBOX-5344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17460490#comment-17460490
 ] 

Laurence Urbain commented on PDFBOX-5344:
-----------------------------------------

[~mkl] 

I was not considering all these aspects, thanks for the explanation, it makes 
total sense.

[~tilman]

Thanks, I'm gonna try this approach. 
{quote}
What we could do is to improve the signing examples to catch this corner case 
(by using the {{PDAcroform.getFields()}} method which gets the root level 
fields) so that people notice it and change their code accordingly.
{quote}

I was not aware of these nested fields until recently, adding this logic to the 
examples could definitely help noticing the field hierarchy.

> Adding a signature on nested fields has no effect
> -------------------------------------------------
>
>                 Key: PDFBOX-5344
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-5344
>             Project: PDFBox
>          Issue Type: Bug
>          Components: Signing
>    Affects Versions: 2.0.24
>            Reporter: Laurence Urbain
>            Priority: Major
>         Attachments: nested-signature-field.pdf
>
>
> Hi,
> I am not able add a signature to a document if the signature field is nested 
> (the signature field is not a direct child of the acro form).
> When I call the method PDDocument.addSignature(), the signature field is 
> properly marked as  "needs to be updated" but not its parents.
> As a result, when the incremental save is done, the changes are lost.
> To be able to add the signature for such field, all the parent fields in the 
> hierachy should also be marked as "needs to be updated".
> Please find a sample file attached.
> Here is the code snippet to build it:
> {code:java}
> final PDDocument pdDocument = new PDDocument();
> final PDPage page = new PDPage();
> pdDocument.addPage(page);
> PDAcroForm form = new PDAcroForm(pdDocument);
> pdDocument.getDocumentCatalog().setAcroForm(form);
> final PDNonTerminalField level1 = new PDNonTerminalField(form);
> level1.setPartialName("level1");
> form.getFields().add(level1);
> final PDNonTerminalField level2 = new PDNonTerminalField(form);
> level2.setPartialName("level2");
> level1.setChildren(List.of(level2));
> final PDSignatureField signatureField = new PDSignatureField(form);
> signatureField.setPartialName("field1");
> PDAnnotationWidget widget = signatureField.getWidgets().get(0);
> widget.setRectangle(new PDRectangle(50, 700, 200, 20));
> widget.setPage(page);
> widget.setPrinted(true);
> page.getAnnotations().add(widget);
> level2.setChildren(List.of(signatureField)); {code}
> Thanks



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to