イメージ/イメージを動的に追加する必要がある既存のPDFがあります。イメージはファイルアップロードから得られます。ファイルをアップロードしたら、どのようにしてPDF上にイメージを配置するかを指定できます。 1つのコードスニペットが正しく動作しません。これは、任意の数のページでPDFを処理する必要があります。私が理解しているところから、絶対位置はPDFの最後のページの左下隅から設定されています。ページ1の左から30ピクセル、左から50ピクセルのイメージを表示する必要がある場合は、どうすればよいでしょうか?または、ページ2の左側から100pxの上端から50pxの画像を表示する必要がある場合は、ITextを使用して特定のx-y座標で画像をPDFに追加するにはどうすればよいですか?
http://rip747.wordpress.com/2009/03/26/add-an-image-dynamically-to-a-pdf-with-cf-and-itext/にあるコードを使用しようとしました。私は以下の私のニーズのためにそれを変更した:
<cfscript>
myLeft = 30;
myTop = 50;
myPageNum = 1;
// output buffer to write PDF
fileIO = createObject("java","java.io.FileOutputStream").init(myOutputPath);
// reader to read our PDF
reader = createObject("java","com.lowagie.text.pdf.PdfReader").init(mySourcePath);
// 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");
// initalize our image
img = image.getInstance(imgPath);
x = (reader.getPageSize(1).width() - img.scaledWidth()) - myLeft;
y = (reader.getPageSize(1).height() - img.scaledHeight()) - myTop;
// now we assign the position to our image
img.setAbsolutePosition(javacast("float", x), javacast("float", y));
// 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>
上記のコードは、2ページの右上隅に私の画像を配置 - は50px左からトップ/ 30pxを形成します。
私は近くにいると知っています...私のニーズに合わせてこれを釘付けにする助けが必要です。
私のコードを更新しました。これは、2ページの左上隅に画像を取得する - 正しいポジショニングが、私は1ページにそれをしたい:
x = myLeft;
y = (reader.getPageSize(1).height()) - img.scaledHeight() - myTop;
私はページまでの画像を取得するために、1ページの高さを追加するために必要かもしれないと思った
私は、以下のオプションのいずれかをしようとすると1が、イメージが完全に消える:
// I figure I'll need something like this to handle multi-page docs
y = (reader.getPageSize(1).height() * reader.getNumberOfPages()) - img.scaledHeight() - myTop;
y = reader.getPageSize(1).height() + reader.getPageSize(1).height() - img.scaledHeight() - myTop;
あなたのpdfの「縦向き」の向きのみですか? IIRCでは、ランドスケープpdfを使用してローテーションを考慮する必要があります。また、常にfileIOを閉じるか、ファイルがロックされたままになることがあります。 (ヘンリーが言及したようにCF8にいないと仮定して) – Leigh