ITextSharp отсутствует класс HeaderFooter

Это странно, в настоящее время я использую iTextSharp, и я хочу добавить верхний и нижний колонтитулы в свои PDF файлы. Во всех примерах они просто создают новый объект HeaderFooter(). Однако у меня есть все импортированные библиотеки iTextSharp, но HeaderFooter не определен. Я использовал Reflector, чтобы узнать, могу ли я узнать, где находится класс и его отсутствие?!

Кто-нибудь знает, что случилось с этим классом?

Ответ 1

Большинство примеров относятся к более ранней версии iTextSharp. Для версии 5+ iTextSharp (которая, как я полагаю, вы используете) свойство/объект HeaderFooter было удалено.

См http://itextpdf.com/history/?branch=50&node=500 (последняя строка)

Чтобы добавить верхние и нижние колонтитулы, теперь вы должны использовать PageEvents. Следующий код демонстрирует, как это сделать в VB. Вы в основном должны наследовать класс PageEventsHelper и следить за событием OnStartPage, а затем добавлять свой код по мере необходимости.

Imports iTextSharp.text.pdf
Imports iTextSharp.text
Imports System.IO
Module Module1
    Sub Main()
        Dim pdfDoc As New Document()
        Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(pdfDoc, New FileStream("tryme2.pdf", FileMode.Create))
        Dim ev As New itsEvents
        pdfWrite.PageEvent = ev
        pdfDoc.Open()
        pdfDoc.Add(New Paragraph("Hello World"))
        pdfDoc.NewPage()
        pdfDoc.Add(New Paragraph("Hello World Again"))
        pdfDoc.Close()
    End Sub
End Module

Public Class itsEvents
    Inherits PdfPageEventHelper
    Public Overrides Sub OnStartPage(ByVal writer As iTextSharp.text.pdf.PdfWriter, ByVal document As iTextSharp.text.Document)
        Dim ch As New Chunk("This is my Qaru Header on page " & writer.PageNumber)
        document.Add(ch)
    End Sub
End Class

Сначала он выглядит как больше работы, но имеет потенциал роста, который вы можете добавить к своему верхнему/нижнему колонтитулу, чем просто обычный текст. Теперь вы можете легко добавить все, что будет поддерживать Document.