gpt4 book ai didi

pdf - 使用 OpenPDF 的 PDF 每页上的矩形页眉和页脚 block

转载 作者:行者123 更新时间:2023-12-04 14:10:23 31 4
gpt4 key购买 nike

我正在使用 OpenPDF 生成 PDF 发票报告。在 PDF 上,我必须在每一页上为页眉/页脚设置一个矩形 block 。我已使用 HeaderFooter 类在每个页面上添加页眉/页脚,但这仅适用于 Phrase

HeaderFooter header = new HeaderFooter(new Phrase("This is a Header."), false);

有什么方法可以使用 HeaderFooter 类为页眉/页脚设置具有高度和宽度的矩形 block ?

这就是我在每个页面上所期望的:

expected output

最佳答案

您可以通过创建自定义 PdfPageEvent 来做到这一点,只要新页面完成(onEndPage 事件),您就可以在其中添加元素。最简单的方法是在独立类或匿名类中扩展 PdfPageEventHelper。首先,定义和设置矩形的样式。其次,使用回调内的 PdfWriter 将它们添加到页面。

这是一个展示如何操作的演示:

Document document = new Document(PageSize.A4, 40, 40, 200, 200);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf"));

// footer
final Rectangle footer = new Rectangle(30, 30, PageSize.A4.getRight(30), 180);
footer.setBorder(Rectangle.BOX);
footer.setBorderColor(Color.BLACK);
footer.setBorderWidth(2);

// header
final Rectangle header = new Rectangle(footer);
header.setTop(PageSize.A4.getTop(30));
header.setBottom(PageSize.A4.getTop(180));

// content-box
final Rectangle box = new Rectangle(footer);
box.setTop(document.top());
box.setBottom(document.bottom());

// create and register page event to add the rectangles
writer.setPageEvent(new PdfPageEventHelper() {
@Override
public void onEndPage(PdfWriter writer, Document document) {
PdfContentByte cb = writer.getDirectContent();
cb.rectangle(header);
cb.rectangle(footer);
cb.rectangle(box);
}
});

document.open();
document.add(new Paragraph(LOREM_IPSUM)); // just some constant filler text
document.close();

结果如下所示:

result

关于pdf - 使用 OpenPDF 的 PDF 每页上的矩形页眉和页脚 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64980765/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com