Вызов doc.NewPage()
ничего не делает, когда на текущей странице ничего нет. Есть как минимум 3 варианта:
1) Добавить что-то невидимое на текущей странице. Пустой абзац, некоторое пространство для PdfContentByte, что угодно.
2) Скажите вашему PDF-документу: «Нет, он действительно не пустой, поверьте мне на слово»: PdfDocument.PageEmpty =false;
3) Не бросайте, когда NewPage
возвращает false. Это вполне приемлемо в данных обстоятельствах.
Я бы лично пошел с # 3.