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

John Hewson closed PDFBOX-2404.
-------------------------------
    Resolution: Invalid

Closing because this does not appear to be a bug in PDFBox.

> OutOfMemory or/and IndexOutOfBounds while creating a pdf with lots of images
> ----------------------------------------------------------------------------
>
>                 Key: PDFBOX-2404
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-2404
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 1.8.7
>         Environment: Windows 7/ Eclipse
>            Reporter: serge zr
>
> Hi Folks,
> I try to create PDFs with full page images (as they come from a scanner).
> First I got OutOfMemoryError(exception one) after second page (which is 
> already not nice).  
> I gave the process more memory (1G) and got the second Exception.
> The code breaks around 17 pages with the second exception (IndexOutOfBounds). 
> The image in this example was taken from the internet as I can not provide 
> the original, but produces the same issue. 
> Another remark - the production is quite slow...
> {code}
> //---------------Start Code----------
> package test;
> import java.awt.image.BufferedImage;
> import java.io.IOException;
> import java.net.URL;
> import javax.imageio.ImageIO;
> import org.apache.pdfbox.exceptions.COSVisitorException;
> import org.apache.pdfbox.pdmodel.PDDocument;
> import org.apache.pdfbox.pdmodel.PDPage;
> import org.apache.pdfbox.pdmodel.common.PDRectangle;
> import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
> import org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap;
> import org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
> public class PDFCreatorTest {
>       public static void main(String[] args) {
>               try {
>                       createPDF("new.pdf");
>               } catch (COSVisitorException e) {
>                       // TODO Auto-generated catch block
>                       e.printStackTrace();
>               } catch (IOException e) {
>                       // TODO Auto-generated catch block
>                       e.printStackTrace();
>               }
>       }
>       private static void createPDF(String pdffile) throws IOException,
>                       COSVisitorException {
>               PDDocument doc = null;
>               try {
>                       doc = new PDDocument();
>                       int tstsize = 30;
>                       for (int pid = 0; pid < tstsize; pid++) {
>                               System.out.println("Create page: " + pid + " of 
> " + tstsize
>                                               + "...");
>                               PDPage page = new PDPage();
>                               doc.addPage(page);
>                               BufferedImage tmp_image = ImageIO
>                                               .read(new URL(
>                                                               
> "http://carolhagen.files.wordpress.com/2013/06/skewed-demo_wilhomebw-page-001.jpg";));
>                               PDRectangle box = // page.getCropBox();
>                               page.getMediaBox();
>                               BufferedImage image = new 
> BufferedImage(tmp_image.getWidth(),
>                                               tmp_image.getHeight(), 
> BufferedImage.TYPE_4BYTE_ABGR);
>                               
> image.createGraphics().drawRenderedImage(tmp_image, null);
>                               PDXObjectImage ximage = new PDPixelMap(doc, 
> image);
>                               PDPageContentStream contentStream = new 
> PDPageContentStream(
>                                               doc, page, true, true);
>                               float scale = box.getHeight() / 
> ximage.getHeight();
>                               contentStream.drawXObject(ximage, 0, 0, 
> ximage.getWidth()
>                                               * scale, ximage.getHeight() * 
> scale);
>                               contentStream.close();
>                               System.out.println("Page: " + pid + " 
> created!");
>                               
>                       }
>                       System.out.println("Save document" + pdffile);
>                       doc.save(pdffile);
>               } catch (Exception e) {
>                       e.printStackTrace();
>               } finally {
>                       if (doc != null) {
>                               doc.close();
>                       }
>               }
>       }
> }
> //---------------End Code-------------
> //--------------------------- Exception one
> Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
>       at java.awt.image.DataBufferByte.<init>(Unknown Source)
>       at java.awt.image.Raster.createInterleavedRaster(Unknown Source)
>       at java.awt.image.BufferedImage.<init>(Unknown Source)
>       at 
> org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap.createImageStream(PDPixelMap.java:130)
>       at 
> org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap.<init>(PDPixelMap.java:87)
>       at test.PDFCreatorTest.createPDF(PDFCreatorTest.java:65)
>       at test.PDFCreatorTest.main(PDFCreatorTest.java:34)
> //-------------Exception two----------
> java.lang.IndexOutOfBoundsException: Index: 141, Size: 141
>       at java.util.ArrayList.rangeCheck(Unknown Source)
>       at java.util.ArrayList.get(Unknown Source)
>       at 
> org.apache.pdfbox.io.RandomAccessBuffer.seek(RandomAccessBuffer.java:110)
>       at 
> org.apache.pdfbox.io.RandomAccessFileOutputStream.write(RandomAccessFileOutputStream.java:106)
>       at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
>       at java.io.BufferedOutputStream.flush(Unknown Source)
>       at java.io.FilterOutputStream.close(Unknown Source)
>       at 
> org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap.createImageStream(PDPixelMap.java:233)
>       at 
> org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap.<init>(PDPixelMap.java:102)
>       at 
> org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap.createImageStream(PDPixelMap.java:222)
>       at 
> org.apache.pdfbox.pdmodel.graphics.xobject.PDPixelMap.<init>(PDPixelMap.java:87)
>       at test.PDFCreatorTest.createPDF(PDFCreatorTest.java:56)
>       at test.PDFCreatorTest.main(PDFCreatorTest.java:21)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to