これを達成するには、PdfPageEvent
を使用する必要があります。この例ではChange the color of pdf pages alternatively using iText pdf in java
、我々はページ全体をカバー色付きの背景を作成:この質問への答えを見てみましょう
public class Background extends PdfPageEventHelper {
@Override
public void onEndPage(PdfWriter writer, Document document) {
int pagenumber = writer.getPageNumber();
if (pagenumber % 2 == 1 && pagenumber != 1)
return;
PdfContentByte canvas = writer.getDirectContentUnder();
Rectangle rect = document.getPageSize();
canvas.setColorFill(pagenumber < 3 ? BaseColor.BLUE : BaseColor.LIGHT_GRAY);
canvas.rectangle(rect.getLeft(), rect.getBottom(), rect.getWidth(), rect.getHeight());
canvas.fill();
}
}
今度は、この例を適応してみましょう:
public class Background extends PdfPageEventHelper {
@Override
public void onEndPage(PdfWriter writer, Document document) {
PdfContentByte canvas = writer.getDirectContentUnder();
Rectangle rect = document.getPageSize();
canvas.setColorFill(BaseColor.BLUE);
canvas.rectangle(rect.getLeft() + 36, rect.getBottom() + 36, rect.getWidth() - 72, rect.getHeight() - 72);
canvas.fill();
}
}
rectangle()
メソッドのパラメータを変更することで、あらゆる側面に36ユーザー単位のマージンを導入しました。
もちろん、あなたがPdfWriter
にページイベントを宣言する必要があります:私の問題を解決し
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
Background event = new Background();
writer.setPageEvent(event);
おかげで、 – Harshal