PDF to JPG problem

Good thinking! Here is a new version improved by AI:—

<cffunction name="convertPdfPageToImage" output="false" returntype="string" hint="Converts a specified PDF page to a base64-encoded PNG image.">
  <cfargument name="filename" type="string" required="true" hint="The path to the PDF file.">
  <cfargument name="pageNo" type="numeric" default="0" hint="The page number to convert.">
  <cfargument name="dpi" type="numeric" default="72" hint="The DPI (dots per inch) of the output image.">
  
  <cfscript>
    var PDFRenderer = createObject("java", "org.apache.pdfbox.rendering.PDFRenderer");
    var ImageIO = createObject("java", "javax.imageio.ImageIO");
    var Loader = createObject("java", "org.apache.pdfbox.Loader");
    
    var file = createObject("java", "java.io.File").init(expandPath(arguments.filename));
    
    if (!file.exists()) {
      throw("The specified file does not exist.");
    }
    
    var doc = Loader.LoadPDF(file);
    
    if (arguments.pageNo lt 0 or arguments.pageNo gte doc.getNumberOfPages()) {
      throw("The specified page number is out of range.");
    }
    
    var renderer = PDFRenderer.init(doc);
    var image = renderer.renderImageWithDPI(arguments.pageNo, arguments.dpi);
    var baos = createObject("java", "java.io.ByteArrayOutputStream").init();
    
    ImageIO.write(image, "PNG", baos);
    baos.flush();
    
    var imageInBytes = baos.toByteArray();
    baos.close();
    doc.close();
    
    var b64 = binaryEncode(imageInBytes, "base64");
    
    return b64;
  </cfscript>
</cffunction>
2 Likes