如何在asp.net中使用itextsharp查找是否启动新页面
我有一个数据集,其中有多个记录可用,我正在从中创建PDF。 每个记录的数据不固定,它可能包含任意数量的页面,现在我想在每个页面的末尾添加姓氏。每当我想用页脚做这件事时,每页都会显示相同的名字,但我想知道打印记录的人的名字 这是我的密码 @K.C如何在asp.net中使用itextsharp查找是否启动新页面,asp.net,itextsharp,Asp.net,Itextsharp,我有一个数据集,其中有多个记录可用,我正在从中创建PDF。 每个记录的数据不固定,它可能包含任意数量的页面,现在我想在每个页面的末尾添加姓氏。每当我想用页脚做这件事时,每页都会显示相同的名字,但我想知道打印记录的人的名字 这是我的密码 @K.C Document Document=新文档(); //PdfWriter writer=PdfWriter(文档、响应、输出流); PdfWriter writer=PdfWriter.GetInstance(document,Response.Outp
Document Document=新文档();
//PdfWriter writer=PdfWriter(文档、响应、输出流);
PdfWriter writer=PdfWriter.GetInstance(document,Response.OutputStream);
document.Open();
对于(int i=0;i
您使用
writer.PageEvent = new PDFFooter(ds.Tables["ab"].Rows[i]["lName"].ToString());
在循环中更新PdfWriter
的PageEvent
不幸的是,这种C#语法(就像在iText/Java中使用setter一样)具有误导性:
public virtual IPdfPageEvent PageEvent {
get {
return pageEvent;
}
set {
if (value == null) this.pageEvent = null;
else if (this.pageEvent == null) this.pageEvent = value;
else if (this.pageEvent is PdfPageEventForwarder) ((PdfPageEventForwarder)this.pageEvent).AddPageEvent(value);
else {
PdfPageEventForwarder forward = new PdfPageEventForwarder();
forward.AddPageEvent(this.pageEvent);
forward.AddPageEvent(value);
this.pageEvent = forward;
}
}
}
()
因此,上面引用的代码行不会替换当前的PageEvent
实例,而是向其添加来解释您的评论:
每次页脚与上一页脚合并后打印
您必须首先清除现有页面事件:
writer.PageEvent = null;
writer.PageEvent = new PDFFooter(ds.Tables["ab"].Rows[i]["lName"].ToString());
(参见上文对
null
值的特殊处理)或使用单个PageEvent
实现实例,在该实例中,您仅更改一个成员变量,而该变量又被用作页脚文本。能否向我们展示一些您尝试过的代码?您正在使用页面事件,不是吗?可能您正在使用PdfPTable
?你的问题不清楚。请详细说明。@MKL是的,我正在为此使用endOfPage事件,但每次页脚都与上一个页脚合并,然后打印。
writer.PageEvent = null;
writer.PageEvent = new PDFFooter(ds.Tables["ab"].Rows[i]["lName"].ToString());