[
https://issues.apache.org/jira/browse/PDFBOX-3284?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15213622#comment-15213622
]
Timo Boehme commented on PDFBOX-3284:
-------------------------------------
I assume the string value in COSFloat was meant to keep the original value when
writing a new PDF without precision changes. At least one may only store it if
needed.
However I see another source for high memory consumption: the pure number of
objects. With the PDF in question there are approx. 5 Mill. This results in
some very large hash maps with large number of entries (e.g. for logging
references). As I see it one could nearly half the number of objects when
storing COSObject in the COSDocument objectPool. Currently the key is
COSObjectKey and value COSObject. However object-number and generation-number
of COSObjectKey is also available in COSObject. Thus it should be possible to
store the same COSObject as key and value. What do you think?
> Big Pdf parsing to text - Out of memory
> ---------------------------------------
>
> Key: PDFBOX-3284
> URL: https://issues.apache.org/jira/browse/PDFBOX-3284
> Project: PDFBox
> Issue Type: Bug
> Components: Parsing
> Affects Versions: 1.8.10, 1.8.11, 2.0.0, 2.1.0
> Reporter: Nicolas Daniels
> Attachments: massparse-stat.txt
>
>
> I'm trying to parse a quite big PDF (26MB) and transform it to text, however
> I'm facing a huge memory consumption leading to out of memory error. Running
> my test with -Xmx768M will always fail. I've to increase to 1500M to make it
> work.
> The resulting text is only 3MB so I don't understand why it is taking so much
> memory.
> I've tested this code over 1.8.10, 1.8.11 & 2.0.0 with same result.
> The pdf can be found
> [here|https://www2.swift.com/uhbonline/books/public/en_uk/clr_3_0_stdsmx_msg_def_rpt_sch/sr2015_mx_clearing_3dot0_mdr2_solution.pdf]
> My code:
> {code:title=Test.java|borderStyle=solid}
> @Test
> public void testParsePdf_Content_Memory() throws Exception {
> {
> InputStream inputStream = new
> FileInputStream("c:/tmp/sr2015_mx_clearing_3dot0_mdr2_solution.pdf");
> try {
> StringWriter writer = new StringWriter();
> FileWriter fileWriter = new FileWriter(new
> File("c:/tmp/test.txt"));
> PDFTextStripper pdfTextStripper = new PDFTextStripper();
> pdfTextStripper.writeText(PDDocument.load(inputStream),
> fileWriter);
> fileWriter.close();
> } finally {
> inputStream.close();
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]