[ 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)