You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Javier García Sánchez (JIRA)" <ji...@apache.org> on 2013/08/21 17:54:51 UTC
[jira] [Closed] (PDFBOX-1677) PDPage.convertToImage() throw
java.lang.IndexOutOfBoundsException
[ https://issues.apache.org/jira/browse/PDFBOX-1677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Javier García Sánchez closed PDFBOX-1677.
-----------------------------------------
Resolution: Not A Problem
Reproduced In: 1.8.2, 1.8.1 (was: 1.8.1, 1.8.2)
It was not an issue. I was closing streams in a wrong order.
Thanks to Apache Jira Issues Team
> 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