使用iText生成带有页眉和页脚图像的pdf

使用iText生成带有页眉和页脚图像的pdf,pdf,itext,pdf-generation,itext7,Pdf,Itext,Pdf Generation,Itext7,我期待着使用iText创建pdf。 pdf将有一个页眉和一个页脚。页眉和页脚都有一个图像(公司徽标) 我期待着一个类似的例子。我将第一次使用iText库,因此我不确定从何处开始。要将页眉和页脚添加到使用iText 7.x生成的PDF中,通常需要为页面开始和/或页面结束创建事件侦听器,并在其中添加页眉和页脚内容 例如,您可以在中这样做。这里定义了两个事件侦听器: //头事件处理程序 受保护的类标头实现IEventHandler{ 字符串头; 公共标头(字符串标头){ this.header=头;

我期待着使用iText创建pdf。 pdf将有一个页眉和一个页脚。页眉和页脚都有一个图像(公司徽标)


我期待着一个类似的例子。我将第一次使用iText库,因此我不确定从何处开始。

要将页眉和页脚添加到使用iText 7.x生成的PDF中,通常需要为页面开始和/或页面结束创建事件侦听器,并在其中添加页眉和页脚内容

例如,您可以在中这样做。这里定义了两个事件侦听器:

//头事件处理程序
受保护的类标头实现IEventHandler{
字符串头;
公共标头(字符串标头){
this.header=头;
}
@凌驾
公共无效handleEvent(事件){
//检索文档和
PdfDocumentEvent docEvent=(PdfDocumentEvent)事件;
PdfDocument pdf=docEvent.getDocument();
PdfPage page=docEvent.getPage();
矩形pageSize=page.getPageSize();
PdfCanvas PdfCanvas=新PdfCanvas(
page.getLastContentStream(),page.getResources(),pdf);
画布画布=新画布(pdfCanvas、pdf、pageSize);
canvas.setFontSize(18f);
//在位置处写入文本
canvas.showTextAligned(标题,
pageSize.getWidth()/2,
pageSize.getTop()-30,TextAlignment.CENTER);
}
}
此事件处理程序向当前页面添加一个简单的常量字符串作为标题。同样,您也可以添加图像

//第X页,共Y页
受保护类PageXofY实现IEventHandler{
受保护的PdfFormXObject占位符;
保护浮子侧=20;
保护浮点数x=300;
保护浮子y=25;
受保护浮动空间=4.5f;
保护浮子下降=3;
公共页面xofy(pdf文档pdf){
占位符=
新的PdfFormXObject(新的矩形(0,0,边,边));
}
@凌驾
公共无效handleEvent(事件){
PdfDocumentEvent docEvent=(PdfDocumentEvent)事件;
PdfDocument pdf=docEvent.getDocument();
PdfPage page=docEvent.getPage();
int pageNumber=pdf.getPageNumber(第页);
矩形pageSize=page.getPageSize();
PdfCanvas PdfCanvas=新PdfCanvas(
page.getLastContentStream(),page.getResources(),pdf);
画布画布=新画布(pdfCanvas、pdf、pageSize);
第p段=新的第()段
.add(“Page”).add(String.valueOf(pageNumber)).add(“of”);
showTextAligned(p,x,y,TextAlignment.RIGHT);
addXObject(占位符,x+空格,y-下降);
pdfCanvas.release();
}
公共无效书面总计(pdf文档pdf){
画布=新画布(占位符,pdf);
canvas.showTextAligned(String.valueOf(pdf.getNumberOfPages()),
0,下降,文本对齐。左);
}
}
此事件处理程序稍微复杂一些,它向当前页面添加了一个页脚x,页脚为y。由于此时总页数y未知,因此会添加对占位符XObject的引用,一旦您知道创建了所有页面,就可以调用
writeTotal
,让此方法将当前文档页数写入占位符XObject

您可以按以下方式注册这些事件侦听器:

PdfWriter writer=新的PdfWriter(pdfDest);
PdfDocument PdfDocument=新的PdfDocument(writer);
//创建事件处理程序
String header=“使用页面事件的pdfHtml页眉和页脚示例”;
收割台headerHandler=新收割台(收割台);
PageXofY footerHandler=新的PageXofY(pdfDocument);
//分配事件处理程序
pdfDocument.addEventHandler(PdfDocumentEvent.START_页,headerHandler);
pdfDocument.addEventHandler(PdfDocumentEvent.END_页面,footerHandler);
//添加内容
[…这里您将常规页面内容添加到PdfDocument…]
//将总页数写入占位符并关闭文档
footerHandler.writeTotal(pdfDocument);
pdfDocument.close();

(实际示例使用pdfHTML添加基于HTML的常规页面内容。您也可以这样做,或者您可以直接使用
文档
段落
文本
,以及其他布局类来生成内容。)

要向使用iText 7.x生成的PDF添加页眉和页脚,通常,您将为页面开始和/或页面结束创建事件侦听器,并在其中添加页眉和页脚内容

例如,您可以在中这样做。这里定义了两个事件侦听器:

//头事件处理程序
受保护的类标头实现IEventHandler{
字符串头;
公共标头(字符串标头){
this.header=头;
}
@凌驾
公共无效handleEvent(事件){
//检索文档和
PdfDocumentEvent docEvent=(PdfDocumentEvent)事件;
PdfDocument pdf=docEvent.getDocument();
PdfPage page=docEvent.getPage();
矩形pageSize=page.getPageSize();
PdfCanvas PdfCanvas=新PdfCanvas(
page.getLastContentStream(),page.getResources(),pdf);
画布画布=新画布(pdfCanvas、pdf、pageSize);
canvas.setFontSize(18f);
//在位置处写入文本
canvas.showTextAligned(标题,
pageSize.getWidth()/2,
pageSize.getTop()-30,TextAlignment.CENTER);
}
}
此事件处理程序向当前页面添加一个简单的常量字符串作为标题。同样,您也可以添加图像

//第X页,共Y页
受保护类PageXofY实现IEventHandler{
受保护的PdfFormXObject占位符;
保护浮子侧=20;
保护浮点数x=300;
保护浮子y=25;
受保护浮动空间=4.5f;
保护浮子