2010-11-24 17 views
2

私はPDFフォトアルバムテンプレートを用意しています(テキストと写真が表示されるはずの四角形があります)。私の必要性は、これらのテンプレートを使って実際のアルバムを作成することです。プログラムでPDFフォトアルバムを作成する

私の計画は、iTextとJavaを使用することでした。私は、使用するすべての画像URLの配列をアプリに送信します。テンプレート上に画像を配置する場所を正確に知り、配置するために絶対配置を使用します。

私はちょうど別の言語を使用することを意味していても、これを行うのが簡単か清潔な方法があるのだろうかと思っていましたか? PDFが生成された後、それらはPDFである必要があるプリンタに自動的に送信されます。

おかげ

答えて

1

私は、これはImageMagickを使用して(でもシェルスクリプト)多くの言語でかなり容易に行うことができると思います。

0

写真をラップするテキストがあるかどうかは不明です。とにかく私はApache-FOPを見るでしょう。私はこれをたくさん使ってきました - それは少しのカスタマイズを必要とするかもしれません。

0

正確な位置がわからない場合は、いくつかのオプションがあります。

1)既存の画像を置き換えます。

このオプションを使用すると、テンプレートのオーバーハングを実際に行うことができます。アルファブレンディングなどを使用します。ファンシーを得る。 stamper.getUnderContent(1)を使用し、透明な背景でテンプレートを構築した場合は、上記のコードで同じことができます。私はちょうどその前に助けるべきreplace an image questionに答えました。

新しいイメージは、すべてのプレースホルダイメージのグラフィック状態を継承します。 x、y、wid、hei、オプションのコンテンツグループ、透明性、すべての方法。

2)Acrobatのテンプレート(またはiTextと思われる)に注釈(フィールドは簡単にアクセスできます)を追加し、そのコードをx、y、wid、heiに提供するRECTを使用します。

// given the above stamper 
AcroFields fields = stamper.getAcroFields(); 
PdfDictionary replaceAnnot = fields.getFieldItem("ReplaceMe").getMerged(0); 

//we can remove the field from the PDF without breaking the info in replaceAnnot. 
fields.removeField("ReplaceMe"); 

// rects are laid out [llx, lly, urx, ury] 
PdfArray rect = replaceAnnot.getAsArray(PdfName.RECT); 
float x = rect.getAsNumber(0).floatValue(); 
float y = rect.getAsNumber(1).floatValue(); 
float width = rect.getAsNumber(2).floatValue() - x; 
float height = rect.getAsNumber(3).floatValue() - y; 

上記の画像コードにこれらの座標を入力してください。

関連する問題