Legacy notice!

iText 5 is the previous major version of iText's leading PDF SDK. iText 5 has been EOL, and is no longer developed. Switch your project to iText 7, integrating the latest developments.
Check related iText 7 content!

Why does it not work when I override the OnEndPage event to add a paragraph to the document?

In the code below, you can see that I've overridden the OnEndPage event and tried to add a paragraph to the document. However, I get a System.StackOverflowException error when attempting to run the code. Does anyone have any idea why this is happening and how I can fix it?

public override void OnEndPage(PdfWriter writer, Document document)
{
    base.OnEndPage(writer, document);
    Paragraph p = new Paragraph("Paragraph");
    document.Add(p);
}

Posted on StackOverflow on Jun 18, 2014 by Ognjen Koprivica

It is forbidden to use document.Add() in a page event. The document object passed as a parameter is actually a PdfDocument object. It is not the Document you have created in your code, but an internal object that is used by iText. You should use it for read-only purposes only.

If you want to add content in the OnEndPage() method, you need the writer, for instance writer.DirectContent.