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

Reply via email to