2009-03-30 15 views
4

ColdFusioniTextの両方を使用して動的イメージをPDFに挿入するコードをまとめました。私はそれを働かせて、それについてブログをした後、私は助けることができませんでしたが、これを達成するためのより良い方法があるかもしれないと思います。私は現在、プロダクションアプリでこれの基本的なアイデアを使用していますので、コメントや提案が最も歓迎されるでしょう。ColdFusionとiTextを使用したPDFへの動的イメージの追加

<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”> 
+0

をオーバーレイすることができた後、あなたは透かしが必要ですか? – Sergii

+0

CF8はこれを馬鹿馬鹿しく簡単にしています。 (まだまだクールな例です:)! –

+1

イメージを既存のPDFに挿入するだけの透かしは使用しません。 – rip747

答えて

0

私はドント を挿入するために、画像と私の既存のPDFファイルを上書きし、これだけの画像を挿入し、元のPDFファイルを変更し、ちょうどiTextのはdoesnので挿入したいiTextのライブラリを別の方法でそれを作りました私のために働く。

したがって、私は空のpdf(http://itextpdf.com/examples/iia.php?id=59) に画像を挿入する必要がありますし、私の元のpdfと新しいpdf画像に参加してください。複数のページで1つのpdfを入手する。 (http://itextpdf.com/examples/iia.php?id=110

あなたはこのクールなコンセプトを持つPDFページ http://itextpdf.com/examples/iia.php?id=113

+0

私は今、これをもっと直接的に行う方法を改善しています。すべてのpdfページを重ねずに、必要なものを重ねるだけです。 ** itextからPdfContentByte **のaddtemplateで –

関連する問題