Membuat Header, Footer dan Nomor Halaman pada PDF dengan PHP FPDF

Dokumen PDF (Portable Document Format) sudah menjadi format dokumen yang secara luas dikenal. Karena format PDF bersifat terbuka (open document format), PDF dapat dibuka di berbagai sistem operasi dan juga dapat dibuat dengan berbagai macam software, termasuk dapat dibuat dengan bahasa pemrograman seperti PHP. Untuk tutorial step by step membuat laporan pdf dengan php sudah pernah saya posting sebelumnya. Nah, dalam tutorial kali ini saya akan membahas mengenai penambahan Header, Footer serta Nomor Halaman pada halaman PDF yang dibuat. Semoga tutorial ini bermanfaat untuk kita semua, dan jangan lupa sebarkan tutorial ini agar lebih banyak lagi orang yang menikmati manfaatnya.

Langsung aja, untuk membuat Header dan Footer pada halaman PDF caranya sangat mudah. Kita cukup mendefinisikan fungsi Header() dan Footer() di dalam class kita. Fungsi tersebut tidak perlu dipanggil karena secara otomatis sudah dipanggil bersamaan dengan pembentukan object dari class.

Untuk lebih jelasnya, mari kita lihat source program php berikut ini.

  1. <?php
  2. define('FPDF_FONTPATH','fpdf17/font/');
  3. require('fpdf17/fpdf.php');
  4.  
  5. class PDF extends FPDF
  6. {
  7. //Page header
  8. function Header()
  9. {
  10. //Logo
  11. $this->Image('logo-ubl.jpg',10,8);
  12. //Arial bold 15
  13. $this->SetFont('Arial','B',15);
  14. //pindah ke posisi ke tengah untuk membuat judul
  15. $this->Cell(80);
  16. //judul
  17. $this->Cell(30,10,'LAPORAN REKAPITULASI PENERIMAAN MAHASISWA BARU',0,0,'C');
  18. //pindah baris
  19. $this->Ln(20);
  20. //buat garis horisontal
  21. $this->Line(10,25,200,25);
  22. }
  23.  
  24. //Page Content
  25. function Content()
  26. {
  27. $this->SetFont('Times','',12);
  28. for($i=1; $i<=40; $i++)
  29. $this->Cell(0,10,'Laporan Mahasiswa '.$i,0,1);
  30. }
  31.  
  32. //Page footer
  33. function Footer()
  34. {
  35. //atur posisi 1.5 cm dari bawah
  36. $this->SetY(-15);
  37. //buat garis horizontal
  38. $this->Line(10,$this->GetY(),200,$this->GetY());
  39. //Arial italic 9
  40. $this->SetFont('Arial','I',9);
  41. //nomor halaman
  42. $this->Cell(0,10,'Halaman '.$this->PageNo().' dari {nb}',0,0,'R');
  43. }
  44. }
  45.  
  46. //contoh pemanggilan class
  47. $pdf = new PDF();
  48. $pdf->AliasNbPages();
  49. $pdf->AddPage();
  50. $pdf->Content();
  51. $pdf->Output();
  52. ?>

Penjelasan Program

  • Baris 2-3: menyertakan library fpdf, dalam contoh ini digunakan library fpdf versi 1.7.
  • Baris 8-22: mendefinisikan fungsi Header() yang akan mengatur isi dari header halaman.
  • Baris 11: fungsi Image() digunakan untuk menampilkan gambar dengan nama file logo-ubl.jpg pada posisi 10 point dari kiri dan 8 point dari atas.
  • Baris 13: mengatur jenis huruf (font) menjadi Arial dengan ukuran 15pt dan berhuruf tebal (bold).
  • Baris 17: menampilkan judul laporan
  • Baris 21: membuat garis horizontal mulai dari posisi 10, 25 hingga 200, 25.
  • Baris 25-30: menampilkan isi halaman. Ini hanya contoh isi, dibuat agar isinya melebihi satu halaman.
  • Baris 33-43: mendefinisikan fungsi Footer() yang akan mengatur isi dari footer halaman.
  • Baris 36: fungsi SetY() untuk mengatur posisi pointer (cursor) dari atas halaman. Nilai negatif (-) akan mengatur posisi pointer dari bawah halaman.
  • Baris 38: membuat garis horizontal pada posisi pointer (cursor)
  • Baris 42: membuat nomor halaman dengan fungsi PageNo() dan jumlah halaman dengan memanggil konstanta {nb}.
  • Baris 46-51: membuat object dari class dan menampilkan halaman pdf di browser.
Hasil dari program di atas kurang lebih terlihat pada screen shoot berikut ini:

Demo dan Download Tutorial

Referensi dan Tutorial Terkait

Comments
  1. 385 days ago
    • 384 days ago
  2. 374 days ago
  3. 374 days ago
  4. 364 days ago
  5. 362 days ago
    • 362 days ago
      • 361 days ago
        • 360 days ago
          • 356 days ago
  6. 357 days ago
  7. 332 days ago
  8. 330 days ago
  9. 319 days ago
  10. 308 days ago
  11. 308 days ago
  12. 289 days ago
  13. 249 days ago
  14. 243 days ago
  15. 145 days ago
  16. 12 days ago
    • 12 days ago
      • 12 days ago
  17. 2 days ago

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>