Add dynamic image to PDF using ColdFusion and iText

I have compiled code to insert a dynamic image into a PDF using ColdFusion and iText , filling in some form fields as well. After I started working and wrote about it, I could not help but think that there might be a better way to achieve this. I am using the basic idea of ​​this in a production application right now, so any comments or suggestions would be most welcome.

<cfscript> // full path to PDF you want to add image to readPDF = expandpath("your.pdf"); // full path to the PDF we will output. Using creatUUID() to create // a unique file name so we can delete it afterwards writePDF = expandpath("#createUUID()#.pdf"); // full path to the image you want to add yourimage = expandpath("dynamic_image.jpg"); // JAVA STUFF!!! // output buffer to write PDF fileIO = createObject("java","java.io.FileOutputStream").init(writePDF); // reader to read our PDF reader = createObject("java","com.lowagie.text.pdf.PdfReader").init(readPDF); // stamper so we can modify our existing PDF stamper = createObject("java","com.lowagie.text.pdf.PdfStamper").init(reader, fileIO); // get the content of our existing PDF content = stamper.getOverContent(reader.getNumberOfPages()); // create an image object so we can add our dynamic image to our PDF image = createobject("java", "com.lowagie.text.Image"); // get the form fields pdfForm = stamper.getAcroFields(); // setting a value to our form field pdfForm.setField("our_field", "whatever you want to put here"); // initalize our image img = image.getInstance(yourimage); // centering our image top center of our existing PDF with a little margin from the top x = (reader.getPageSize(1).width() - img.scaledWidth()) - 50; y = (reader.getPageSize(1).height() - img.scaledHeight()) / 2 ; // now we assign the position to our image img.setAbsolutePosition(javacast("float", y),javacast("float", x)); // add our image to the existing PDF content.addImage(img); // flattern our form so our values show stamper.setFormFlattening(true); // close the stamper and output our new PDF stamper.close(); // close the reader reader.close(); </cfscript> <!β€” write out new PDF to the browser β€”> <cfcontent type="application/pdf" file = "#writePDF#" deleteFile = "yes"> 
+4
source share
2 answers

<cfpdf> + DDX seems possible.

See http://forums.adobe.com/thread/332697

+2
source

I did it differently using the itext library. I don’t want to overwrite my existing pdf with the image to be inserted, so just change the original pdf file by inserting the image, just paste it using itext, it does not work for me.

So, I need to paste the image into an empty pdf ( http://itextpdf.com/examples/iia.php?id=59 ) And then join my original pdf and the new pdf image. Getting a single PDF with multiple pages. ( http://itextpdf.com/examples/iia.php?id=110 )

After that, you can overlay the PDF pages with this cool concept http://itextpdf.com/examples/iia.php?id=113

0
source

All Articles