混合内容は、document.add()
とを直接添加してください。私たちは常に微妙な操作をしています。 カスタムテンプレートの高さを知り、その高さに一致する空白を追加する必要があります。しかし、カスタムテンプレートの内容がページと一致しない場合はどうしますか?
私はあなたの計画を忠告するでしょう、私は別のアプローチをお勧めします。
私はあなたのカスタムテンプレートがPdfTemplate
オブジェクトであると仮定しています。その場合、このオブジェクトをImage
オブジェクト内にラップし、document.add()
を使用してテンプレートを追加することができます。
インスタンスを参照してください:私たちはdocument.add()
で文書にこのtemplate
を追加したい
PdfTemplate template = canvas.createTemplate(rect.getWidth(), rect.getHeight() + 10);
ColumnText.showTextAligned(template, Element.ALIGN_LEFT,
new Phrase("DARK GRAY", regular), 0, rect.getHeight() + 2, 0);
barcode.placeBarcode(template, BaseColor.BLACK, BaseColor.BLACK);
ので、我々:この例ではChanging Font on PDF Rotated Text
を、私たちはバーコードやテキストでPdfTemplate
を作成テンプレートをImage
オブジェクト内にラップします。
Image image = Image.getInstance(template);
これを追加できるようになりました文書に:その後
document.add(image);
、私たちは余分なコンテンツを追加することができます。
Paragraph p3 = new Paragraph("SMALL", regular);
p3.setAlignment(Element.ALIGN_CENTER);
document.add(p3);
内容が正しい位置にtemplate
の下に追加されていること。 getVerticalPosition()
でY位置を取得することについてもう心配する必要はなく、テンプレートを追加した後にY位置を設定することについて心配する必要はありません。テンプレートが現在のページに収まらない場合は、自動的に次のページに移動します。
重要:あなたのテンプレートの解像度が気になるかもしれません。あなたはいけません。テンプレートがベクトルデータで構成されている場合、そのデータをImage
オブジェクト内にラップしてもラスターデータには変更されません。ベクタデータは保存されます。これは、バーコードの例では重要です。なぜなら、バーコードの品質をラスターイメージにすることによって悪化させたくないからです。
Bruno Lowagie:ありがとうございました!あなたは私の日を救った:) – saab