title: javax.imageio.IIOException: I/O error writing PNG file
body: <p>I am using Jpedal tool to convert PDF to Image.
  When PDF pages are very large in number and we process it to convert then tomcat gets stopped and <strong>throws Exception-</strong></p>
  
  <pre><code>  javax.imageio.IIOException: I/O error writing PNG file.
  </code></pre>
  
  <p>Can anyone please help for this.</p>
  
  <pre><code>public boolean createPDF2ImageTask(String sourcePDFAbsPath, String destinationImageAbsPath, Float scalingFactor, String fileFormat, int softLimitInKB) throws Exception
      { 
  
          System.setProperty("org.jpedal.flattenForm","true");
          logger.info("createPDF2ImageTask ( sourcePDFAbsPath = "+sourcePDFAbsPath+" , destinationImageAbsPath = "+destinationImageAbsPath+ ", scalingFactor = "+scalingFactor+ " , fileFormat = "+fileFormat+ " softLimitInKB ="+softLimitInKB );
          boolean status = true;
          Float newScalingFactor;
          int sizeOfImageInKB;
  
          //PdfDecoder object provides the conversion 
  
          PdfDecoderServer decoder = null;
          Map mapValues = null;
          BufferedImage imageToSave = null;
          BufferedOutputStream bufferedOutputStream = null;
          long startTime = System.currentTimeMillis();
          try
          {
  
              Helper.deleteFile(destinationImageAbsPath);
  
              //mappings for non-embedded fonts to use
              FontMappings.setFontReplacements();
  
              decoder = new PdfDecoderServer(true);
              decoder.openPdfFile(sourcePDFAbsPath);
  
  
              mapValues = new HashMap();
  
  
              mapValues.put(JPedalSettings.EXTRACT_AT_BEST_QUALITY_MAXSCALING, 2);
  
              //alternatively secify a page size (aspect ratio preserved so will do best fit)
              //set a page size (JPedal will put best fit to this)
              PdfPageData pageData = decoder.getPdfPageData();
              int width = (int)(scalingFactor*pageData.getCropBoxWidth(1));
              int height = (int)(scalingFactor*pageData.getCropBoxHeight(1));
              logger.info("width = "+ width + "   height= "+height);          
              mapValues.put(JPedalSettings.EXTRACT_AT_PAGE_SIZE, new String[]{String.valueOf(width),String.valueOf(height)});
  
              //which takes priority (default is false)
              mapValues.put(JPedalSettings.PAGE_SIZE_OVERRIDES_IMAGE, Boolean.TRUE);
  
              PdfDecoderServer.modifyJPedalParameters(mapValues);                              
  
              /////////////////////////////////////////////////////////////////////////////////////
  
              try
              {
                  imageToSave = decoder.getPageAsHiRes(1, null, false);
                  decoder.flushObjectValues(true);
                  if(imageToSave != null)
                  {
                      logger.info("Start saving image as a file");
                      bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(new File(destinationImageAbsPath)));
  
                      ImageIO.write(imageToSave, fileFormat, bufferedOutputStream);
  
                  }
                  else
                  {
                      throw new Exception("imageToSave is null, Exception in extractPageAsImage ");
                  }
              }
              catch(Exception e)
              {
                  logger.error("Exception in extractPageAsImage :: "+e);
                  logger.error("Exception stack trace in extractPageAsImage :: ",e);
                  throw new Exception("Exception in extractPageAsImage :: "+e);
              }
  </code></pre>
  
  <blockquote>
    <p>It's throwing Exception - Exception in extractPageAsImage :: javax.imageio.IIOException: I/O error writing PNG file!</p>
  </blockquote>