Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Not A Bug
-
2.0.18
-
None
-
None
-
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)
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:
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); } }
Attached pdf file
My PDf file exceeds 60MB, so I have it shared on Dropbox.
https://www.dropbox.com/s/zniuke2fb4efz4j/sample.pdf
Heap Size:
-Xmx2048m
Console output:
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)
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