我怎样才能在PDF中使用iText在Java中添加页眉和页脚? [英] How can I add Header and footer in pdf using iText in java?
本文介绍了我怎样才能在PDF中使用iText在Java中添加页眉和页脚?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在我的pdf(iText)中添加页眉和页脚。
为此,我创建了一个servlet,并且还创建了一个扩展PdfPageEventHelper的类HeaderandFooter。
I am trying to add Header and footer in my pdf(iText). For this I have created one servlet and I also created one class HeaderandFooter that extends PdfPageEventHelper.
public class HeaderAndFooter extends PdfPageEventHelper {
public HeaderAndFooter(String name) {
super();
}
@Override
public void onEndPage(PdfWriter writer, Document document) {
super.onEndPage(writer, document);
//code
}
@Override
public void onStartPage(PdfWriter writer, Document document) {
super.onStartPage(writer, document);
//code
}
}
但我不知道应该在方法中写什么,以便它将显示标题的任何文本和页脚页面号。
But I dont know what should I write in a method so that It will display heading any text and in footer page no.
推荐答案
查看这个例子,它取自 iText in Action book 。
Have a look at this example taken from the iText in Action book.
class TableHeader extends PdfPageEventHelper {
/** The header text. */
String header;
/** The template with the total number of pages. */
PdfTemplate total;
/**
* Allows us to change the content of the header.
* @param header The new header String
*/
public void setHeader(String header) {
this.header = header;
}
/**
* Creates the PdfTemplate that will hold the total number of pages.
* @see com.itextpdf.text.pdf.PdfPageEventHelper#onOpenDocument(
* com.itextpdf.text.pdf.PdfWriter, com.itextpdf.text.Document)
*/
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(30, 16);
}
/**
* Adds a header to every page
* @see com.itextpdf.text.pdf.PdfPageEventHelper#onEndPage(
* com.itextpdf.text.pdf.PdfWriter, com.itextpdf.text.Document)
*/
public void onEndPage(PdfWriter writer, Document document) {
PdfPTable table = new PdfPTable(3);
try {
table.setWidths(new int[]{24, 24, 2});
table.setTotalWidth(527);
table.setLockedWidth(true);
table.getDefaultCell().setFixedHeight(20);
table.getDefaultCell().setBorder(Rectangle.BOTTOM);
table.addCell(header);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.addCell(String.format("Page %d of", writer.getPageNumber()));
PdfPCell cell = new PdfPCell(Image.getInstance(total));
cell.setBorder(Rectangle.BOTTOM);
table.addCell(cell);
table.writeSelectedRows(0, -1, 34, 803, writer.getDirectContent());
}
catch(DocumentException de) {
throw new ExceptionConverter(de);
}
}
/**
* Fills out the total number of pages before the document is closed.
* @see com.itextpdf.text.pdf.PdfPageEventHelper#onCloseDocument(
* com.itextpdf.text.pdf.PdfWriter, com.itextpdf.text.Document)
*/
public void onCloseDocument(PdfWriter writer, Document document) {
ColumnText.showTextAligned(total, Element.ALIGN_LEFT,
new Phrase(String.valueOf(writer.getPageNumber() - 1)),
2, 2, 0);
}
}
这篇关于我怎样才能在PDF中使用iText在Java中添加页眉和页脚?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文