OnStartPage CurrentPageNumber неверно ITextSharp - PullRequest
1 голос
/ 13 мая 2019

Я новичок в использовании ITextSharp и пытаюсь использовать OnStartPage метод события PdfPageEventHelper для создания простой таблицы содержимого

Все почти сделано, единственная проблема в том, что первый вызов 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);
    }
}

Почему это происходит? Я делаю что-то не так?

Спасибо!

1 Ответ

1 голос
/ 18 июня 2019

Я не могу воспроизвести вашу проблему.

Я создал следующий прослушиватель событий:

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. Если вам случится использовать более старую версию, пожалуйста, обновите, возможно, вы имеете дело с исправленной ошибкой в ​​течение длительного времени ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...