我正在使用 iText 5.0.5 创建一个 pdf 输出。我正在从数据库中以字节的形式读取数据,然后使用 HTMLWorker 将其添加到文档中以生成 pdf。BUt 我无法在该 pdf 文档的每个 paage 上添加标题。请帮忙。
最新的 iText 是 5.0.6.
要创建页眉和页脚,您需要使用PdfPageEvent界面。这通常是通过从PdfPageEventHelper派生,并覆盖您需要的方法来完成的。
PdfPageEvent
在PdfPageEvent中,您必须使用PdfContentByte绘制到 PDF。好消息是你可以使用ColumnText将对齐的文本添加到给定的边界框中,它将为你处理换行符。
PdfContentByte
ColumnText
public class HeaderFooterPageEvent extends PdfPageEventHelper { private String headerStr, footerStr; private Rectangle hBox, fBox; public HeaderFooterPageEvent(String hStr, Rectangle _hBox, String fString, Rectangle _fBox) { headerStr = hStr; hBox = _hBox; footerStr = fStr; fBox = _fBox; } public onEndPage(PdfWriter writer, Document doc) { // draw the header text. ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_RIGHT, headerStr, hBox.getRight(), hBox.getTop, 0); // draw the footer text. ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_RIGHT, footerStr, fBox.getRight(), fBox.getTop, 0); } }
如果您的页眉和页脚是 HTML 格式,这将无法正常工作。为此,你将不得不做一些 round-about hackery。
public onEndPage(PdfWriter writer, Document doc) { PdfReader reader = new PdfReader(headerPDFPath); PdfImportedPage headerPageImport = writer.getImportedPage(reader, 1); // 1 -> first page PdfContentByte cb = writer.getDirectContent(); cb.addTemplate(headerPageImport, hBox.bottom(), hBox.left()); }
1 回答
最新的 iText 是 5.0.6.
要创建页眉和页脚,您需要使用
PdfPageEvent
界面。这通常是通过从PdfPageEventHelper派生,并覆盖您需要的方法来完成的。在
PdfPageEvent
中,您必须使用PdfContentByte
绘制到 PDF。好消息是你可以使用ColumnText
将对齐的文本添加到给定的边界框中,它将为你处理换行符。如果您的页眉和页脚是 HTML 格式,这将无法正常工作。为此,你将不得不做一些 round-about hackery。