You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Tilman Hausherr (Jira)" <ji...@apache.org> on 2020/01/11 14:59:00 UTC

[jira] [Closed] (PDFBOX-4733) OutOfMemory when renderImageWithDPI

     [ https://issues.apache.org/jira/browse/PDFBOX-4733?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Tilman Hausherr closed PDFBOX-4733.
-----------------------------------
    Resolution: Not A Bug

> 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: dev-unsubscribe@pdfbox.apache.org
For additional commands, e-mail: dev-help@pdfbox.apache.org