Uploaded image for project: 'PDFBox'
  1. PDFBox
  2. PDFBOX-4733

OutOfMemory when renderImageWithDPI

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Bug
    • 2.0.18
    • None
    • Rendering
    • 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

       

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            leoleozhu Leo Zhu
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: