如何将HTML页眉和页脚添加到页面?

如何将HTML页眉和页脚添加到页面?,第1张

如何将HTML页眉和页脚添加到页面?

通常, 禁止

onStartPage()
事件中添加内容。这是 禁止
添加内容到
document
的对象
onEndPage()
。您应该
onEndPage()
使用
PdfWriter
不是
文档在方法中添加页眉和页脚。此外:通过一遍又一遍地解析HTML,您正在浪费大量CPU。

请看一下HtmlHeaderFooter示例。

它有两个HTML片段,一个为页眉,一个为页脚。

public static final String HEADER =    "<table width="100%" border="0"><tr><td>Header</td><td align="right">Some title</td></tr></table>";public static final String FOOTER =    "<table width="100%" border="0"><tr><td>Footer</td><td align="right">Some title</td></tr></table>";

请注意,有比使用HTML更好的描述页眉和页脚的方法,但这也许是您的要求之一,所以我不会问您为什么不使用官方文档中介绍的任何方法。顺便说一句:解决问题所需的所有信息也可以在该免费电子书中找到,因此您可能需要下载…

我们将在页面事件中仅读取一次这些HTML代码段,然后在每个页面上一遍又一遍地渲染元素:

public class HeaderFooter extends PdfPageEventHelper {    protected ElementList header;    protected ElementList footer;    public HeaderFooter() throws IOException {        header = XMLWorkerHelper.parseToElementList(HEADER, null);        footer = XMLWorkerHelper.parseToElementList(FOOTER, null);    }    @Override    public void onEndPage(PdfWriter writer, document document) {        try { ColumnText ct = new ColumnText(writer.getDirectContent()); ct.setSimpleColumn(new Rectangle(36, 832, 559, 810)); for (Element e : header) {     ct.addElement(e); } ct.go(); ct.setSimpleColumn(new Rectangle(36, 10, 559, 32)); for (Element e : footer) {     ct.addElement(e); } ct.go();        } catch (documentException de) { throw new ExceptionConverter(de);        }    }}

您是否看到了用于添加

Element
从XML Worker获得的对象的机制?我们创建一个
ColumnText
对象,将写入 直接内容
writer
(使用
document
禁止)。我们定义一个,
Rectangle
然后使用
go()
来渲染元素。

结果显示在html_header_footer.pdf中。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5054311.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存