Hầu hết các ví dụ đều đề cập đến phiên bản trước đó của iTextSharp. Đối với phiên bản 5+ của iTextSharp (mà tôi cho rằng bạn đang sử dụng) thuộc tính/đối tượng HeaderFooter đã bị loại bỏ.
Xem http://itextpdf.com/history/?branch=50&node=500 (dòng cuối cùng)
Để thêm Headers/Footers bây giờ bạn phải sử dụng PageEvents. Các mã sau đây chứng tỏ làm thế nào để làm điều này trong VB. Về cơ bản, bạn phải kế thừa lớp PageEventsHelper và xem sự kiện OnStartPage - sau đó thêm mã của bạn nếu cần.
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 Stack Overflow Header on page " & writer.PageNumber)
document.Add(ch)
End Sub
End Class
Ban đầu, nó trông giống như nhiều công việc hơn nhưng có xu hướng bạn có thể thêm vào đầu trang/chân trang của mình hơn là văn bản thuần túy. Bây giờ bạn có thể dễ dàng thêm bất cứ điều gì mà Tài liệu sẽ hỗ trợ.
Đó là một bài đăng rất hữu ích. Nhưng tôi đã thêm một đoạn rất lớn và nó sẽ mất khoảng 2-3 trang trước khi tôi viết một mã cho 'Newpage()'. Sau đó, tiêu đề sẽ không được áp dụng cho tất cả các trang. làm thế nào để xử lý trường hợp như vậy. Cảm ơn trước – suryakiran
Đã lâu rồi kể từ khi tôi chơi với iTextSharp nhưng tôi nghĩ bạn sẽ thấy tiêu đề của mình sẽ được áp dụng cho tất cả các trang. Với ví dụ của tôi ở trên tôi đang buộc một trang mới với pdfDoc.NewPage() nhưng nếu bạn thêm một đoạn kéo dài nhiều hơn một trang, một trang mới được tạo tự động cho bạn bởi iTextSharp khiến OnStartPage được kích hoạt. – CResults
Không. Tôi vừa thử, nó không làm việc cho tôi. Nhưng thú vị, tôi thấy rằng 'OnEndPage (PdfWriter writer, Document document) 'được kích hoạt bất cứ khi nào trang được kết thúc nhưng không phải' OnStartPage (PdfWriter writer, Document document) 'khi một trang được tạo tự động. Có vẻ như có sự thay đổi mã từ OnStartPage thành OnEndPage. – suryakiran