iText を使用して、データベース内のデータの Pdf レポートを生成しています...
PDFのページのヘッダーは、画像にテキストが動的に追加された画像です。たとえば、生成された日付などです。
itext で PdfPTable タイプのテーブルに背景画像を設定できるかどうかは誰でも知っています。
ありがとう
私はそれが非常に遅いことを知っていますが、誰かを助けるかもしれません. これがその方法です。
クラス BGClass を作成し、PdfPCellEvent を実装して、次のメソッドに入ります。
@Override
public void cellLayout(PdfPCell arg0, Rectangle arg1, PdfContentByte[] arg2) {
try {
PdfContentByte pdfContentByte = arg2[PdfPTable.BACKGROUNDCANVAS];
Image bgImage = Image.getInstance("URL_TO_YOUR_IMAGE");
pdfContentByte.addImage(bgImage, arg1.getWidth(), 0, 0, arg1
.getHeight(), arg1.getLeft(), arg1.getBottom());
} catch (BadElementException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
PDFを作成しているメインクラスで、pdfpCell.setCellEvent(new BGClass()); ここで、pdfpCell は背景画像が必要なセルです。
Prabhatのテクニックには1つか2つの欠陥があります。
で行った方がいいですPdfPTableEvent
。テーブルが複数のページにまたがっている場合、イベントハンドラーはテーブルごとに1回呼び出されることに注意してください。heights
とパラメータはwidths
少しファンキーです。それぞれの最初の値は絶対開始位置です。残りの値は実際には高さと幅です。便利ですが、変数名は少し誤解を招く可能性があります。
また、画像の各インスタンスは、PDF内のその画像の別のコピーを意味することに注意してください。'emを保存し、可能な限り'emを再利用します。