[
https://issues.apache.org/jira/browse/PDFBOX-1677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13725044#comment-13725044
]
Javier García Sánchez commented on PDFBOX-1677:
-----------------------------------------------
2013-07-31 09:54:06,809 ERROR (Utils.java:1588) BONO -
Utils.getImageOutputStreamFromPdfFile-->java.lang.IndexOutOfBoundsException:
Index: 8, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at
org.apache.pdfbox.io.RandomAccessBuffer.seek(RandomAccessBuffer.java:84)
at
org.apache.pdfbox.io.RandomAccessFileInputStream.read(RandomAccessFileInputStream.java:96)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
at java.io.FilterInputStream.read(FilterInputStream.java:116)
at java.io.PushbackInputStream.read(PushbackInputStream.java:169)
at
org.apache.pdfbox.io.PushBackInputStream.read(PushBackInputStream.java:111)
at
org.apache.pdfbox.io.PushBackInputStream.read(PushBackInputStream.java:104)
at
org.apache.pdfbox.pdfparser.BaseParser.checkForMissingCloseParen(BaseParser.java:750)
at
org.apache.pdfbox.pdfparser.BaseParser.parseCOSString(BaseParser.java:829)
at
org.apache.pdfbox.pdfparser.PDFStreamParser.parseNextToken(PDFStreamParser.java:270)
at
org.apache.pdfbox.pdfparser.PDFStreamParser.access$000(PDFStreamParser.java:46)
at
org.apache.pdfbox.pdfparser.PDFStreamParser$1.tryNext(PDFStreamParser.java:182)
at
org.apache.pdfbox.pdfparser.PDFStreamParser$1.hasNext(PDFStreamParser.java:194)
at
org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:255)
at
org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:235)
at
org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:215)
at org.apache.pdfbox.pdfviewer.PageDrawer.drawPage(PageDrawer.java:125)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:781)
at org.apache.pdfbox.pdmodel.PDPage.convertToImage(PDPage.java:712)
at
com.transhotel.BONO.util.Utils.getImageOutputStreamFromPdfFile(Utils.java:1540)
at
com.transhotel.BONO.servlet.GenerarBonoServlet.service(GenerarBonoServlet.java:289)
at
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3590)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2200)
at
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2106)
at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1428)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
> PDPage.convertToImage() throw java.lang.IndexOutOfBoundsException
> -----------------------------------------------------------------
>
> Key: PDFBOX-1677
> URL: https://issues.apache.org/jira/browse/PDFBOX-1677
> Project: PDFBox
> Issue Type: Bug
> Components: PDFReader, PDModel, Utilities
> Affects Versions: 1.8.1, 1.8.2
> Environment: JSF1.1+ PdfBox1.8.2+Tomcat (and Weblogic)
> Reporter: Javier García Sánchez
> Labels: PDPage,, convertToImage(),
> java.lang.IndexOutOfBoundsException
> Original Estimate: 48h
> Remaining Estimate: 48h
>
> Sometimes, a random times, the method PDPage.convertToImage() throw an
> exception like java.lang.IndexOutOfBoundsException.
> I said sometimes, because is a ramdom process which i cannot understand.
> This is my code:
> public byte[] getImageOutputStreamFromPdfFile (byte[] inputPDF) throws
> IOException,Exception{
> logger.info("Utils.getImageOutputStreamFromPdfFile
> (byte[] inputPDF)");
> //resultado
> byte[] result=null;
>
> if (inputPDF!=null && inputPDF.length>0){
> long time = System.currentTimeMillis();
>
> InputStream isPDF = null;
>
>
> //imagen resultado
> ByteArrayOutputStream imageOutputStream = null;
>
> try{
> isPDF = new
> ByteArrayInputStream(inputPDF);
> imageOutputStream = new
> ByteArrayOutputStream();
>
> //pdf
> PDDocument document =
> PDDocument.load(isPDF, true);
> @SuppressWarnings("unchecked")
> List<PDPage> pages =
> document.getDocumentCatalog().getAllPages();
> List<BufferedImage> imagesList = new
> ArrayList<BufferedImage>(
> pages.size());
>
> PDPage pDPage = null;
> BufferedImage auxImage = null;
> // width y height final image
> int maxWidth = 0;
> int totalHeight = 0;
> for (int i = 0; i < pages.size(); i++) {
> pDPage = pages.get(i);
>
> // get Image Page
> auxImage =
> pDPage.convertToImage();
>
> auxImage.flush();
> // maxWidth
> if (auxImage.getWidth() >
> maxWidth) {
> maxWidth =
> auxImage.getWidth();
> }
>
> // totalHeight
> totalHeight +=
> auxImage.getHeight();
>
> // add image to the list
> imagesList.add(i, auxImage);
> }
>
> BufferedImage bImageFromConvert = new
> BufferedImage(maxWidth,
> totalHeight,
> BufferedImage.TYPE_INT_ARGB);
>
> Graphics g =
> bImageFromConvert.getGraphics();
>
> int auxHeightDraw = 0;
> for (BufferedImage img : imagesList) {
> g.drawImage(img, 0,
> auxHeightDraw, null);
> auxHeightDraw +=
> img.getHeight();
> }
>
> imagesList.clear();
>
> ImageIO.write(bImageFromConvert,
> ConstantesProperties.EXTENSION_IMAGE, imageOutputStream);
>
>
> result=imageOutputStream.toByteArray();
>
>
>
> logger.info("Utils.getImageOutputStreamFromPdfFile --> OK: Generation
> time:"+(System.currentTimeMillis()-time));
>
> }catch (IOException e) {
>
>
> logger.error("Utils.getImageOutputStreamFromPdfFile-->"+Utils.stackTraceToString(e));
> result=null;
> throw e;
>
> }catch (Exception e) {
>
>
> logger.error("Utils.getImageOutputStreamFromPdfFile-->"+Utils.stackTraceToString(e));
> result=null;
> throw e;
>
> }finally{
>
> if (isPDF!=null){
> isPDF.close();
> }
> if (imageOutputStream!=null){
> imageOutputStream.close();
> }
>
> }//end finally
> }//end if
> return result;
> }//end getImageOutputStreamFromPdfFile
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira