[
https://issues.apache.org/jira/browse/PDFBOX-4733?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tilman Hausherr resolved PDFBOX-4733.
-------------------------------------
Resolution: Not A Bug
Closing this because it is not a bug. Big result images will need more memory,
as are PDFs with big images inside. The link I provided indicates some
workarounds. I was able to get it to work with {{-Xmx3g}}. Another idea
({{BigBufferedImage}}) is shown in PDFBOX-4726.
> OutOfMemory when renderImageWithDPI
> -----------------------------------
>
> Key: PDFBOX-4733
> URL: https://issues.apache.org/jira/browse/PDFBOX-4733
> Project: PDFBox
> Issue Type: Bug
> Components: Rendering
> Affects Versions: 2.0.18
> Environment: Mac OS X 10.15.2
> java version "1.8.0_211"
> Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
> Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)
> Reporter: Leo Zhu
> Priority: Major
>
> Hi team,
>
> I'm using PDFRenderer to create image for each page of my PDF files.
> But I'm getting OutOfMemory error on some of my pdfs at some page.
>
> *I summarize my code as following:*
>
>
> {code:java}
> File pdfFile = new File(filePath);
> try(PDDocument document = PDDocument.load(pdfFile)) {
> PDFRenderer renderer = new PDFRenderer(document);
> for(int i = 0; i < document.getNumberOfPages(); i++){
> System.out.println("Rendering " + i + " th page");
> BufferedImage bufferedImage = renderer.renderImageWithDPI(i, 300);
> }
> }
> {code}
>
>
> *Attached pdf file*
> My PDf file exceeds 60MB, so I have it shared on Dropbox.
> [https://www.dropbox.com/s/zniuke2fb4efz4j/sample.pdf|https://www.dropbox.com/s/zniuke2fb4efz4j/sample.pdf?dl=0]
>
> *Heap Size:*
> -Xmx2048m
>
> *Console output:*
>
> {code:java}
> Rendering 0 th page
> Rendering 0 th page
> Rendering 1 th page
> Rendering 2 th page
> Rendering 3 th page
> Rendering 4 th page
> Rendering 5 th page
> Rendering 6 th page
> Rendering 7 th page
> Rendering 8 th page
> Rendering 9 th page
> Rendering 10 th page
> Rendering 11 th page
> Rendering 12 th page
> Rendering 13 th page
> Rendering 14 th page
> Rendering 15 th page
> Rendering 16 th page
> Rendering 17 th page
> Rendering 18 th page
> java.lang.OutOfMemoryError: Java heap space
> at java.awt.image.DataBufferByte.<init>(DataBufferByte.java:92) at
> java.awt.image.ComponentSampleModel.createDataBuffer(ComponentSampleModel.java:445)
> at sun.awt.image.ByteInterleavedRaster.<init>(ByteInterleavedRaster.java:90)
> at
> sun.awt.image.ByteInterleavedRaster.createCompatibleWritableRaster(ByteInterleavedRaster.java:1281)
> at
> sun.awt.image.ByteInterleavedRaster.createCompatibleWritableRaster(ByteInterleavedRaster.java:1292)
> at org.apache.pdfbox.filter.DCTFilter.fromBGRtoRGB(DCTFilter.java:312) at
> org.apache.pdfbox.filter.DCTFilter.decode(DCTFilter.java:148) at
> org.apache.pdfbox.cos.COSInputStream.create(COSInputStream.java:84) at
> org.apache.pdfbox.cos.COSStream.createInputStream(COSStream.java:175) at
> org.apache.pdfbox.pdmodel.common.PDStream.createInputStream(PDStream.java:241)
> at
> org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.createInputStream(PDImageXObject.java:774)
> at
> org.apache.pdfbox.pdmodel.graphics.image.SampledImageReader.from8bit(SampledImageReader.java:373)
> at
> org.apache.pdfbox.pdmodel.graphics.image.SampledImageReader.getRGBImage(SampledImageReader.java:226)
> at
> org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.getImage(PDImageXObject.java:477)
> at
> org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject.getImage(PDImageXObject.java:458)
> at org.apache.pdfbox.rendering.PageDrawer.drawImage(PageDrawer.java:1124) at
> org.apache.pdfbox.contentstream.operator.graphics.DrawObject.process(DrawObject.java:67)
> at
> org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:875)
> at
> org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:509)
> at
> org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:483)
> at
> org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:156)
> at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:269) at
> org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:321) at
> org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:243) at
> org.apache.pdfbox.rendering.PDFRenderer.renderImageWithDPI(PDFRenderer.java:215)
> at
> com.github.leoleozhu.PdfRenderTest.testRenderImages(PdfRenderTest.java:31) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498) at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> {code}
> Even of I set the i in the for loop to start at 18, it also fails at 18th
> page.
>
> Could you please have a look and provide some suggestions for my case?
>
> Thank and kind regards
> Leo
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]