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

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

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

Leo Zhu updated PDFBOX-4733:
----------------------------
    Description: 
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

 

 

  was:
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

 

 


> 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