我是使用ITextSharp的新手,我正在尝试使用OnStartPage
的{{1}}事件方法来创建简单的内容表
一切都快完成了,唯一的问题是对PdfPageEventHelper
OnStartPage
的第一次调用PdfWriter
是错误的,应该是1,但是是2,然后,其他所有其他所有调用,CurrentPageNumber
都在应有的页面中。
这是我的代码
CurrentPageNumber
为什么会这样?我做错什么了吗?
谢谢!
答案 0 :(得分:1)
我无法复制您的问题。
我创建了以下事件侦听器:
public class OnStartPageTestHandler : PdfPageEventHelper
{
public override void OnStartPage(PdfWriter writer, Document document)
{
Console.WriteLine("OnStartPage - PdfWriter {0}, Document {1}", writer.CurrentPageNumber, document.PageNumber);
}
}
并用于以下测试方法
public void TestOnStartPagePageNumber()
{
using (MemoryStream memoryStream = new MemoryStream())
using (Document document = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
writer.PageEvent = new OnStartPageTestHandler();
document.Open();
for (int i=0; i<16; i++)
{
document.Add(new Paragraph("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."));
}
}
}
并得到以下结果:
OnStartPage - PdfWriter 1, Document 1
OnStartPage - PdfWriter 2, Document 2
OnStartPage - PdfWriter 3, Document 3
因此,PdfWriter
和Document
都返回正确的当前页码。
对于测试,我使用了当前的iText(Sharp)v5.5.13。如果您碰巧使用的是旧版本,请进行更新,可能您已经解决了很长时间的错误……