Eine aktuelle Anforderung ging aber noch einen Schritt weiter: Die unterschiedlichen PDF-Dateien dienen als Templates. Diese Templates sollen auf der gleichen Seite zusammengefasst und übereinander gelegt werden.
Leider überschreitet dies die doch bescheidenen Möglichkeiten von cfpdf. Also: Ärmel hochkrempeln und direkt mit iText arbeiten. Wer jetzt denkt, es folgt ein Code-Monster, der irrt. Es waren nur einige wenige Zeilen Code nötig, um die Anforderung zu erfüllen:
<cfset pdfpath="expandPath("./pdf")"> <cfset pdffiles="directoryList(pdfPath,false,"query","*.pdf")"> <cfset pdfout="expandPath("./out.pdf")"> <cfset fileoutputstream="createObject("java","java.io.FileOutputStream").init(pdfOut)"> <cfset document="createObject("java","com.lowagie.text.Document").init()"> <cfset pdfwriter="createObject("java","com.lowagie.text.pdf.PdfWriter").getInstance(Document,FileOutputStream)"> <cfset> <cfset content="PdfWriter.getDirectContent()"> <cfloop query="pdfFiles"> <cfset pdfreader="createObject("java","com.lowagie.text.pdf.PdfReader").init("#pdfFiles.directory#\#pdfFiles.name#")"> <cfset pdftemplate="PdfWriter.getImportedPage(PdfReader,1)"> <cfset> </cfset> <cfset> </cfset></cfset></cfset></cfloop></cfset></cfset></cfset></cfset></cfset></cfset></cfset></cfset>
1<cfset pdfpath="expandPath("./pdf")"> <cfset pdffiles="directoryList(pdfPath,false,"query","*.pdf")"> <cfset pdfout="expandPath("./out.pdf")"> <cfset fileoutputstream="createObject("java","java.io.FileOutputStream").init(pdfOut)"> <cfset document="createObject("java","com.lowagie.text.Document").init()"> <cfset pdfwriter="createObject("java","com.lowagie.text.pdf.PdfWriter").getInstance(Document,FileOutputStream)"> <cfset> <cfset content="PdfWriter.getDirectContent()"> <cfloop query="pdfFiles"> <cfset pdfreader="createObject("java","com.lowagie.text.pdf.PdfReader").init("#pdfFiles.directory#\#pdfFiles.name#")"> <cfset pdftemplate="PdfWriter.getImportedPage(PdfReader,1)"> <cfset> </cfset> <cfset> </cfset></cfset></cfset></cfloop></cfset></cfset></cfset></cfset></cfset></cfset></cfset></cfset>