【问题标题】:OnStartPage CurrentPageNumber is wrong ITextSharpOnStartPage CurrentPageNumber 错误 ITextSharp
【发布时间】:2019-06-18 22:24:39
【问题描述】:

我是使用 ITextSharp 的新手,我正在尝试使用 PdfPageEventHelperOnStartPage 事件方法来创建一个简单的内容表

一切都差不多完成了,唯一的问题是第一次调用OnStartPage PdfWriter CurrentPageNumber 是错误的,应该是 1 但是 2,然后,所有其他调用中的所有其他, CurrentPageNumber 在它应该在的页面中。

这是我的代码

public class MyPdfEventHandler: PdfPageEventHelper
{        
    protected List<PageIndex> Indice = new List<PageIndex>();
    public override void OnStartPage(PdfWriter writer, Document document)
    {
        PageIndex pi = new PageIndex
        {
            Page = writer.CurrentPageNumber,
            Name = "Name Example",
            Text = "Text Example"
        }        
        Indice.Add(pi);
    }
}

为什么会这样?我是不是做错了什么?

谢谢!

【问题讨论】:

  • 我的回答是否澄清了“为什么会这样?我做错了吗?”
  • 完全@mkl,我忘了接受答案,对不起!

标签: c# itext


【解决方案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

因此,PdfWriterDocument 都返回正确的当前页码。


对于测试,我使用了当前的 iText(Sharp) v5.5.13。如果您碰巧使用的是旧版本,请更新,可能您处理了一个修复了很长时间的错误...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多