使用 iTextSharp 的页面的 Header

Header of Page with iTextSharp

我正在使用 iTextSharp 制作 pdf 文档。我使用 PageEvent 事件创建了 header,但我希望我的 header 在某些页面中有所不同。 它适用于为所有页面设置相同的 header。

但是,我想要一些不同的东西。

示例:第 1 页=>Header1 第 2 页=>Header1 第 3 页=>Header2 第 4 页=>Header2

我会解决的,但是遇到这种情况就麻烦了:

writer.PageEvent=new PDFFooter(params);    
doc.Open();  

PageEvent 事件必须在上面创建 doc.Open(); 当我把它放在下面时,它会产生错误。我在 Visual Studio Community 2013 中使用 C#。

我该如何解决这个问题?谢谢!!

我现在解决了问题

解决方案是这样的:

PDFFooter events=new PDFFooter();

PdfWriter writer = PdfWriter.GetInstance(doc, Response.OutputStream);

doc.Open();
foreach (var item in ListReporte)
{                    
   events = new PDFFooter();
   writer.PageEvent = events;
   events.Ciudad = item.Ciudad;
   events.OnStartPage(writer,doc);
   //This was the solution
   if (writer.PageEvent != null)
      writer.PageEvent = null;
 }

在每次迭代中,我将 null 分配给 PageEvent 属性。

但首先,我创建了一个 PDFFooter 对象(class PDFFooter 包含 OnStartPage 和 OnEndPages 事件...),因此,在那个 class 我声明了一些关于我想要的数据的属性显示。

以前,我无法实例化 doc.Open() 下面的 PDFFooter class。代码是这样的:

writer.PageEvent=new PDFFooter();
doc.Open():

所以,我尝试先创建对象,然后将其设置为编写器对象的 PageEvent 属性(我建议这样做)。它奏效了。

感觉很棒