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

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

概述如何使用itext从html源添加标题到pdf? 目前,我们已经扩展了PdfPageEventHelper并覆盖了这些方法.工作正常,但当我到达2页时它会抛出RuntimeWorkerException. @Override void onStartPage(PdfWriter writer, Document document) { InputStream is = ne 如何使用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,is);    }
解决方法 一般来说,禁止在onStartPage()事件中添加内容.禁止在onEndPage()中向文档对象添加内容.您应该使用pdfWriter,NOT文档在onEndPage()方法中添加页眉和页脚.另外:通过一遍又一遍地解析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,但也许这是您的要求之一,所以我不会问你为什么不使用the official documentation中解释的任何方法.方式:在free ebook中也可以找到解决问题所需的所有信息,因此您可能需要下载它…

我们只会在页面事件中阅读这些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,32));            for (Element e : footer) {                ct.addElement(e);            }            ct.go();        } catch (documentException de) {            throw new ExceptionConverter(de);        }    }}

您是否看到我们用于添加从XML Worker获取的Element对象的机制?我们创建一个ColumnText对象,该对象将写入编写器的直接内容(禁止使用该文档).我们定义一个Rectangle,我们使用go()来渲染元素.

结果显示在html_header_footer.pdf.

总结

以上是内存溢出为你收集整理的如何将HTML页眉和页脚添加到页面?全部内容,希望文章能够帮你解决如何将HTML页眉和页脚添加到页面?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/web/1107695.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存