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

如何使用itext从html源向pdf添加标头?

当前,我们扩展了PdfPageEventHelper并覆盖了这些方法。工作正常,但是当我进入2个以上页面时,它将引发RuntimeWorkerException。

 @Override

void onStartPage(PdfWriter writer, Document document) {

InputStream is = new ByteArrayInputStream(header?.getBytes());

XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);

}

@Override

void onEndPage(PdfWriter writer, Document document) {

InputStream is = new ByteArrayInputStream(footer?.getBytes());

XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);

}

回答:

通常, 在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中。

以上是 如何将HTML页眉和页脚添加到页面? 的全部内容, 来源链接: utcz.com/qa/427285.html

回到顶部