iText 7 - Pie de página diferente en la última página - Puntero nulo en PdfDictionary

Estoy tratando de implementar un pie de página eniText7, el pie de página debe ser diferente en la última página del documento, agregué un controlador de eventos que se llama cuando el documento está cerrado pero al intentar recorrer las páginas provoca una excepción de puntero nulo:

java.lang.NullPointerException
at com.itextpdf.kernel.pdf.PdfDictionary.get(PdfDictionary.java:482)
at com.itextpdf.kernel.pdf.PdfDictionary.get(PdfDictionary.java:152)
at com.itextpdf.kernel.pdf.PdfPage.newContentStream(PdfPage.java:777)
at com.itextpdf.kernel.pdf.PdfPage.newContentStreamBefore(PdfPage.java:212)

Aquí está el código que estoy tratando de implementar:

private void onCloseDocument(
        final PdfDocument document, final float xpos, final float ypos)
{

    for (int i = 1; i <= document.getPdfDocument().getNumberOfPages(); i++)
    {
        final PdfPage page = document.getPdfDocument().getPage(i);
        final PdfCanvas canvas =
                new PdfCanvas(page.newContentStreamBefore(), page.getResources(), document.getPdfDocument());
        canvas.beginText();
        canvas.setFontAndSize(document.getFont(), FONT_SIZE);
        canvas.setLeading(14.4F);

        canvas.moveText(xpos, ypos);

        if (i == document.getPdfDocument().getNumberOfPages())
        {
            canvas.showText("Last page");
        }
        else
        {
            canvas.showText("Another page");
        }

        canvas.endText();
        canvas.stroke();
        canvas.release();
    }
}

Inicialmente pensé que esto funcionaba ya que estaba insertando un salto de área única para que el PDF se dividiera en dos páginas, sin embargo, cuando agrego más contenido y las páginas aumentan naturalmente, obtengo esta excepción, de manera similar, ahora lo he probado al intentar insertar múltiples saltos de área y obtengo la misma excepción.

Nota * He encontrado que si configuroimmediateFlush a falso al crear el documento, entonces no obtengo este problema.

Existe un gran impacto de rendimiento \ inconveniente para hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta