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

Berbagi itu indah...Share on Facebook0Share on Google+0Tweet about this on TwitterShare on LinkedIn0Pin on Pinterest0Digg this

40 comments

  1. assalamualaikum pak achmad, ada yang saya tanyakan pak tentang membuat header memakai fpdf. saya kan ingin membuat laopran presensi kehadiran setiap kelas, nah headernya itu mengambil data dari database, itu kalau saya buat kok tidak bisa pak?
    untuk header mengambil data dari tabel/database bagaimana pak?
    mohon pencerahannya

    1. wasslm. kalo sudah bisa ngambil data dari database seharusnya untuk menampilkan ke pdf baik di header maupun di header, ya harusnya bisa. kan tinggal ganti aja text-nya dengan teks yg dari database.

      1. kaloa mengambil data dari database bisa pak, tapi kan saya buat variabel , kalau variabel tersebut saya taruh diheader datanya tidak muncul, tapi kalau saya taruh diluar header datanya bisa muncul. bagaimana ya pak?

  2. mas, mau nanya?
    bagaimana membuat laporan dengan format seperti dibawah ini dalam PHP:

    Laporan PT. ABC

    | No | Keterangan | Jumlah | Harga | Total |
    I. JAKARTA
    | 1. | Buku | 2 | 5.000 | 10.000 |
    | 2. | Amplop | 1 | 1.000 | 1.000 |
    ———————————————
    Jumlah I 11.000
    II. Bogor
    | 1. | Meja | 3 | 10.000| 30.000 |
    | 2. | Kursi | 5 | 1.000| 5.000 |
    ———————————————
    Jumlah II 35.000
    ———————————————
    Jumlah Total (Jumlah I + Jumlah II) 46.000

  3. kok ada yang promoin website ini dengan sistem dofollow ya,,
    tapi kok ini sepertinya nofollow, ane yang salah apa yang promoin yang ngawor.

    thanks gan ini artikelnya nambah ilmu ane,
    visit my site optimalkan blog

  4. assalammualaikum.. saya telah mencoba tutorial ini berhasil pak..namun ketika konten saya isi dari data database muncul error pak… mohon penjelasanya terimakasih

      1. ketika content saya ganti datanya dengan isi yang ada didatabase jadi error..
        ouput has already sent..
        sudah saya kirim di email pak

  5. Many thanks buat pak achmatim, banyak tutor bapak yang sangat bagus, izin membaca dan menerapkannya pak 🙂 Semoga sehat selalu dan terus berkarya.

  6. Selamat pagi Pak Ahmad,
    Numpang tanya, bagaimana caranya membuat satu baris data menjadi satu halaman PDF. Jika kita mempunyai 10 data dalam database, dikonversi menjadi 10 halaman PDF.
    Terima kasih sebelumnya.

  7. pak saya ada permasalahan tentang surat keluar
    gini pak saya membuat surat keluar dari inputan php(semua keterangan dari surat keluar tersebut di input melalui browser dengan menggunakan php) dan saya telah berhasil membuat fpdfnya dari inputan php tersebut tapi saya bingungnya kalok saya ingin membuat 2 lampiran(halaman) atau lebih, dan paraf atau tanda tangannya ada di halaman terakhir saja bukan di halaman sebelumnya
    mohon bantuannya pak

      1. oh iya saya sudah bisa maksih sebelumnya,
        tapi ada permasalahan lagi pak yaitu ketika saya menginput isi dari surat tersebut dengan susunan, seperti susunan paragrah, ada yang tulisannya kedalam, ada jarak antara paragraf satu dengan lainnya, tapi ketika dilihat di fpdf isinya kok malah horizontal pak bukannya sama seperti yang saya inputkan
        mohon bantuannya pak

  8. terima kasih pak akhirnya sudah bisa
    kalok ingin menghapus secara otomatis setelah satu tahun gimana pak, saya type tanggal nya memakai varchar bukan date
    mohon pencerahanyya

  9. Mantap,
    Mas dalam saya mau tanya jika kita akan menampilan sejenis form pendaftaran bagaimana scriptnya pada fpdf agar isiannya sejajar sehingga rapi tampilannya , contoh :

    Formulir Pendaftaran

    Nama : Jhoni
    NIM : 123456789
    Hobby : Olahraga
    Alamat : Jalan Surya Negoro 12

    Terima kasih,

Leave a Reply

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