Пожалуйста, почитайте официальную документацию, и вы будете обнаружите, что пример на необоснованном веб-сайте, с которым вы консультировались, является неправильным.
В главе 5 моей книги «iText in Action - Second Edition» вы найдете пример MovieCountries1. Как вы можете видеть, мы используем writer.getPageNumber() - 1
в методе onCloseDocument()
.
public void onCloseDocument(PdfWriter writer, Document document) {
ColumnText.showTextAligned(total, Element.ALIGN_LEFT,
new Phrase(String.valueOf(writer.getPageNumber() - 1)),
2, 2, 0);
}
Причина этого объясняется в примечании на стр 152 книги:
Примечание Когда документ закрыт, метод newPage()
срабатывает, чтобы выполнить finilizations по току стр. Когда вызывается newPage()
, номер страницы дополняется, поэтому вам нужно использовать (writer.getPageNumber() - 1)
, если вы хотите добавить общее количество страниц в методе onCloseDocument()
.
Если вам нужен другой пример, взгляните на пример FillTemplateHelper на официальном сайте.
iText 2.1.7 больше не поддерживается. Эти версии датируются 2009 годом, и вы больше не должны его использовать. Пожалуйста, прочитайте [Может ли iText 2.1.7/iTextSharp 4.1.6 или ранее использоваться в коммерческих целях?] (Http://developers.itextpdf.com/question/versions-older-than-5), если вам нужны аргументы, чтобы убедить менеджера проекта для перехода на более новую версию iText или iTextSharp. –
Кроме того: 'PdfPageEventHelper' - это реализация интерфейса' PdfPageEvents', который состоит из * ничего, кроме * ** пустых ** * методов *. Следовательно, ваше утверждение о том, что класс «Eventer» является «PdfPageEventHelper», неверно. Это означает, что никто не знает, что вы подразумеваете под классом «Eventer». Такого нет. –
Несмотря на то, что я использовал последнюю версию, также получая ту же проблему. Проверьте код отключения на http://memorynotfound.com/adding-header-footer-pdf-using-itext-java/ – Rajnikant