the blue mountain created PDFBOX-5369:
-----------------------------------------

             Summary: PDDocument.saveIncremental () and stack exhaustion
                 Key: PDFBOX-5369
                 URL: https://issues.apache.org/jira/browse/PDFBOX-5369
             Project: PDFBox
          Issue Type: Bug
          Components: Writing
    Affects Versions: 3.0.0 PDFBox
            Reporter: the blue mountain
         Attachments: PDFBOX-20220126.zip

Merge of fdf annotations into pdf file exhausts stack

attempting to merge an fdf file in a pdf file, using the 
PDDocument.saveIncremental () method, program stack is exhausted because of 
infinite recursion.

looking further in the code, it seems the infinite recursion is being started 
from the private boolean COSIncremental.collect(COSBase base) method.

i have attached a zip file carrying:

- mini.pdf: a minimal pdf file to reproduce the issue

- mini.fdf: an fdf annotation file carrying a /Text annotation and related 
/Popup to reproduce the issue

- COSIncrement.java: a modified source that generate extra traces (+ possible 
work-around)

- COSIncrement-fix.java: a modified source to avoid the problem

- Sample.java: a sample program that loads pdf, copies annotations and saves 
incrementally.

- sample_run.xlsx: an extract of the Sample output to compare a working vs 
non-working

 

notes:

1- I was not able to reproduce the problem using annotations created 
dynamically in the code.

 

2- It is possible to avoid this issue by altering the COSIncrement.java class 
(COSIncrement-fix.java):

it records objects beING collected through enter () method ensuring object is 
not being collected multiple times

 



--
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