Hi,

 

Apache PDFBox 1.8.1 PDFMergerUtility causes an OutOfMemory exception
when merging a large number of single page PDF documents:

 

Here is the stacktrace:

 

Caused by: java.lang.OutOfMemoryError: Java heap space

       at java.util.Arrays.copyOf(Arrays.java:3210)

       at java.util.Arrays.copyOf(Arrays.java:3181)

       at java.util.ArrayList.grow(ArrayList.java:261)

       at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)

       at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)

       at java.util.ArrayList.add(ArrayList.java:458)

       at
org.apache.pdfbox.pdmodel.PDPageNode.getAllKids(PDPageNode.java:217)

       at
org.apache.pdfbox.pdmodel.PDPageNode.getKids(PDPageNode.java:174)

       at
org.apache.pdfbox.pdmodel.PDDocument.addPage(PDDocument.java:278)

       at
org.apache.pdfbox.util.PDFMergerUtility.appendDocument(PDFMergerUtility.
java:528)

       at
org.apache.pdfbox.util.PDFMergerUtility.mergeDocuments(PDFMergerUtility.
java:242)

       at
org.apache.pdfbox.util.PDFMergerUtility.mergeDocumentsNonSeq(PDFMergerUt
ility.java:211)

 

 

Even when using mergeDocumentsNonSeq() - which means an external file is
used to store data that is read from source PDF documents temporarily -
memory is consumed during appending source documents to resulting merged
PDF.

 

My questions are:

 

1.            Is memory consumed because appendDocument() reads PDF
document information from temporary file back to memory...

2.            ...or is memory consumed because data structures are built
up in memory just to hold references to PDF document information in
temporary file (...which in turn is only read during streaming merged
document to file)?

3.            Can I expect version 2.0.3 to handle merging of PDFs
differently?

 

I checked the code of PDFMergerUtility in version 2.0.3 and I am aware
of the new "MemoryUsageSetting" method parameter. As far as I understand
method PDFMergerUtility.appendDocument() there is no significant
difference between version 1.8.10 and version 2.0.3.

 

Reading the code of PDFMergerUtility merging PDF documents seems to be
an extremely "expensive" process. I wonder if there really isn't a way
to do this using less memory...

 

Any answer would be greatly appreciated!

 

Thanks a lot,

 

Daniel

 

Reply via email to