java pdf 页眉,我怎样才能在PDF中使用iText在Java中添加页眉和页脚?

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.

解决方案

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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用iText7库来给PDF添加页眉和页。以下是一个使用iText的示例代码: ```csharp using i.Kernel.Colors; using iText.Kernel.Font; using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Layout.Properties; public void AddHeaderAndFooter(string inputPdfPath, string outputPdfPath) { PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputPdfPath), new PdfWriter(outputPdfPath)); Document doc = new Document(pdfDoc); // 添加页眉 Table header = new Table(1).UseAllAvailableWidth(); header.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).Add(new Paragraph("页眉内容"))); doc.SetHeader(header); // 添加页脚 Table footer = new Table(1).UseAllAvailableWidth(); footer.AddCell(new Cell().SetTextAlignment(TextAlignment.CENTER).Add(new Paragraph("页脚内容"))); doc.SetFooter(footer); // 更新文档 for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++) { doc.ShowTextAligned(new Paragraph("第 " + pageNum + " 页"), 559, 806, pageNum, TextAlignment.RIGHT, VerticalAlignment.TOP, 0); } doc.Close(); } ``` 你可以将`inputPdfPath`替换为你要添加页眉页脚PDF文件路径,将`outputPdfPath`替换为生成的带有页眉页脚PDF文件路径。在示例代码,我们使用`Table`来创建页眉页脚,`SetHeader`和`SetFooter`方法用于将它们添加到文档。然后,我们使用`ShowTextAligned`方法在每一页的右上角显示页码。 请确保你已经将iText7库添加到你的项目

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值