Anda membuat Document
Anda seperti ini:
Document doc = new Document(iTextSharp.text.PageSize.LEDGER, 10, 10, 42, 35);
Artinya Anda memiliki margin atas sebesar 42 unit pengguna dan margin bawah sebesar 35 unit pengguna. Anda dapat menggunakan margin ini untuk menambahkan konten tambahan di halaman acara.
Situs web resminya memiliki banyak contoh dan bagian Tanya Jawab yang komprehensif. Semua contoh dan jawaban diberi tag. Jika Anda mengeklik tag header, Anda dapat menemukan banyak contoh.
Seperti yang telah ditunjukkan oleh orang lain di komentar, Anda perlu membuat implementasi PdfPageEvent
. Cara termudah untuk melakukan ini adalah dengan memperluas kelas PdfPageEventHelper
.
class MyHeaderFooterEvent : PdfPageEventHelper {
Font FONT = new Font(Font.FontFamily.HELVETICA, 18, Font.BOLD);
public override void OnEndPage(PdfWriter writer, Document document) {
PdfContentByte canvas = writer.DirectContent;
ColumnText.ShowTextAligned(
canvas, Element.ALIGN_LEFT,
new Phrase("Header", FONT), 10, 810, 0
);
ColumnText.ShowTextAligned(
canvas, Element.ALIGN_LEFT,
new Phrase("Footer", FONT), 10, 10, 0
);
}
}
Penting untuk diketahui:
- Dilarang menambahkan konten di acara
OnStartPage()
. Tambahkan header dan footer Anda ketika semua konten telah ditambahkan ke halaman tepat sebelum iTextSharp berpindah ke halaman baru. Lebih khusus lagi: tambahkan konten di acara OnEndPage()
.
- Dilarang menambahkan konten ke objek
Document
yang diteruskan ke acara tersebut. Objek ini hanya dapat digunakan untuk tujuan read-only.
Jika Anda memeriksa metode OnEndPage()
di kelas MyHeaderFooterEvent
, Anda melihat bahwa kita mendapatkan DirectContent
dari penulis dan kita menambahkan konten ke canvas
ini menggunakan metode ShowTextAligned
. Ada banyak cara lain untuk menambahkan konten, tetapi Anda secara eksplisit meminta cara yang paling mudah. Cara ini ada keterbatasannya, namun mudah.
Saya menggunakan beberapa nilai hard-code: Saya menggunakan 10
sebagai nilai x
untuk header dan footer. Itu karena Anda menetapkan margin kiri sebesar 10 unit pengguna. Header dan footer dibiarkan sejajar dengan konten sebenarnya yang Anda tambahkan ke halaman. Saya menggunakan 810
untuk nilai y
header karena Anda membuat halaman A4 dengan margin atas 42. Koordinat y
teratas halaman Anda adalah 842. Koordinat y
teratas dari margin atas adalah 842 - 42 = 800. Saya menambahkan 10 unit pengguna sehingga header Anda tidak terpaku pada konten sebenarnya. Koordinat y
bawah halaman adalah 0 dalam kasus Anda dan koordinat y
bawah margin adalah 35. Saya menggunakan 10
untuk garis dasar footer.
Anda membuat wri
dan segera setelah membuat instance PdfWriter
ini, Anda membuka instance Document
. Agar acara halaman dapat diterapkan, Anda harus menambahkan tautan berikut, tepat sebelum membuka Document
:
wri.PageEvent = new MyHeaderFooterEvent();
Sekarang metode OnEndPage()
akan dipanggil setiap kali proses utama Anda menyelesaikan sebuah halaman.
Penting: Anda menambahkan //Code to add header/footer
di tempat yang salah. iTextSharp akan mencoba menghapus konten halaman sesegera mungkin. Jika Anda menambahkan kode untuk menambahkan header/footer setelah Anda menambahkan konten, Anda tidak dapat kembali untuk menambahkan header dan footer ke halaman yang sudah dimasukkan ke aliran keluaran.
person
Bruno Lowagie
schedule
28.12.2015