Ich habe einen Code zusammengestellt, um ein dynamisches Bild unter Verwendung von ColdFusion und iText in ein PDF einzufügen, während ich auch einige Formularfelder ausfülle. Nachdem ich es funktionierte und darüber gebloggt hatte, konnte ich nicht anders, als zu denken, dass es einen besseren Weg geben könnte, dies zu erreichen. Ich benutze die Grundidee in einer Produktions-App, daher sind Kommentare oder Vorschläge sehr willkommen.Hinzufügen eines dynamischen Bildes zu einer PDF mit ColdFusion und iText
<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”>
Sie Wasserzeichen benötigen Sie? – Sergii
CF8 macht das lächerlich einfach. (Immer noch cool Beispiel! :)) –
Ich verwende kein Wasserzeichen als nur ein Bild in eine vorhandene PDF einfügen. – rip747