Membuat Laporan PDF menggunakan PHP dan FPDF

Posted: 14 Januari,2008 in Programming

Langkah – Langkahnya :

1. download library FPDF dari sini

kemudian copy ke root direktori dari web server, atau langsung ke direktori kerja.

2. siapkan dulu tabelnya, misalkan contoh tabelnya seperti ini :

CREATE TABLE IF NOT EXISTS `person` (
`id` int(3) NOT NULL auto_increment,
`Nama` varchar(50) NOT NULL default ”,
`Alamat` varchar(50) NOT NULL default ”,
`Telepon` varchar(50) NOT NULL default ”,
`Jabatan` varchar(50) NOT NULL default ”,
PRIMARY KEY (`id`)
)

Jangan lupa juga isi tabel tersebut dengan beberapa sample data.

3. kemudian mulailah menulis contoh script di bawah ini :

<?php
//koneksi ke database
$host =”localhost”;
$user=”root”;
$password=”";
$database=”person”;
mysql_connect($host,$user,$password) or die(“Koneksi server gagal”);
mysql_select_db($database);

//perintah untuk query dari database
$query =”select nama,alamat,telepon,jabatan from person order by nama”;
$db_query = mysql_query($query) or die(“Query gagal”);

//Variabel untuk iterasi
$i = 0;

//Mengambil nilai dari query database
while($data=mysql_fetch_row($db_query))
{
$cell[$i][0] = $data[0];
$cell[$i][1] = $data[1];
$cell[$i][2] = $data[2];
$cell[$i][3] = $data[3];
$i++;
}

require(‘fpdf/fpdf.php’);

//memulai pengaturan output PDF
class PDF extends FPDF
{
//untuk pengaturan header halaman
function Header()
{
//Pengaturan Font Header
$this->SetFont(‘Times’,'B’,14); //jenis font : Times New Romans, Bold, ukuran 14

//untuk warna background Header
$this->SetFillColor(255,255,255);

//untuk warna text
$this->SetTextColor(0,0,0);

//Menampilkan tulisan di halaman
$this->Cell(19,1,’Data Pribadi’,'TBLR’,0,’C',1); //TBLR (untuk garis)=> B = Bottom,
// L = Left, R = Right
//untuk garis, C = center
}
}

//pengaturan ukuran kertas P = Portrait
$pdf = new PDF(‘P’,'cm’,'A4′);
$pdf->Open();
$pdf->AddPage();

//Ln() = untuk pindah baris
$pdf->Ln();
$pdf->SetFont(‘Times’,'B’,12);

$pdf->Cell(1,1,’No’,'LRTB’,0,’C');
$pdf->Cell(3,1,’Nama’,'LRTB’,0,’C');
$pdf->Cell(4,1,’Alamat’,'LRTB’,0,’C');
$pdf->Cell(5,1,’Telepon’,'LRTB’,0,’C');
$pdf->Cell(6,1,’Jabatan’,'LRTB’,0,’C');
$pdf->Ln();

$pdf->SetFont(‘Times’,”,10);
for($j=0;$j<$i;$j++)
{
//menampilkan data dari hasil query database
$pdf->Cell(1,1,$j+1,’LBTR’,0,’C');
$pdf->Cell(3,1,$cell[$j][0],’LBTR’,0,’C');
$pdf->Cell(4,1,$cell[$j][1],’LBTR’,0,’C');
$pdf->Cell(5,1,$cell[$j][2],’LBTR’,0,’C');
$pdf->Cell(6,1,$cell[$j][3],’LBTR’,0,’C');
$pdf->Ln();
}

//menampilkan output berupa halaman PDF
$pdf->Output();
?>

4. kira – kira hasil akhirnya seperti ini :

pdf1.png

. : : S E L A M A T M E N C O B A : : .

Salam : einsteinkatro

:)

Komentar
  1. unduk mengatakan:

    pak kalo bikin laporan yang datanya banyak dan perlu banyak halaman untuk menampilkannya, bisa dibikin supaya ada header sama footer-nya untuk tiap halaman engga ?

  2. einsteinkatro mengatakan:

    bisa pak asalkan ada fungsi function Header() dan function Footer(), itu langsung generate header dan footer untuk setiap halaman

    salam : einstein_katro :)

  3. bahrull mengatakan:

    pak kalo ada messege error seperti ini :
    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\fpdfex\test.php:1) in C:\AppServ\www\fpdfex\fpdf.php on line 1022
    FPDF error: Some data has already been output to browser, can’t send PDF file maksudnya apa???
    mohon pencerahannya

  4. einsteinkatro mengatakan:

    bisa liat contoh scriptnya pak????

    salam : einstein_katro :)

  5. ako mengatakan:

    salut buatmu mu de —->22 jempol kaki tangan
    semoga sukses ya skripsinya

  6. veni mengatakan:

    kemudian copy ke root direktori dari web server, atau langsung ke direktori kerja. itu maksudnya apa y??
    apa yg di copy??

    lalu require itu dr mn y?? maaf msh bingung nih… hehehe..

  7. veni mengatakan:

    kemudian copy ke root direktori dari web server, atau langsung ke direktori kerja. maksudnya copy yg mn y??

    require itu drmn?? maaf msh bingung

  8. einsteinkatro mengatakan:

    maaf ya kalo tulisan saya membingungkan.

    yang dimaksud di copy ya folder Fpdfnya itu…

    tapi enakan langsung ke direktori kerjanya aja…

    trus requirenya ya dari folder fpdf tadi..

    kan di folder itu ada file fpdf.php, nagh file inilah yang

    sebenarnya dipake buat create pdfnya…

    salam : einstein_katro

  9. arie phare mengatakan:

    gimana caranya biar ada tanggal dan halaman nya secara otomatis n update..???
    please ya kasih tw….

  10. einsteinkatro mengatakan:

    maaf, baru sempet bales… :)
    habisnya udah lama nggak pernah OL lage negh… :)

    kalo nggak salah ngerti maksudnya untuk nampilin halaman dan tanggal otomatis ya??

    mungkin di bagian footer bisa ditambahi script ini :
    //Fungsi untuk footer
    function Footer()
    {
    $this->SetY(-1.5);
    $this->SetFont(‘Arial’,'I’,8);
    $this->Cell(0,1,’Halaman ‘.$this->PageNo().’ / {nb} ‘,0,0,’L');
    $tanggal = date(“d-M-Y”,time());
    $this->SetFont(‘Arial’,”,8);
    $this->Cell(0,1,’Dicetak tanggal : ‘.$tanggal,0,0,’R');
    }

  11. anfe mengatakan:

    pak mau tanya, kalo isi dari suatu record dari data base nya panjang, supaya bisa bergeser ke baris bawahnya gmn caranya? soalnya selama ini, isinya memanjang ke kanan, jadi menerjang ke kolom selanjutnya, padahal sudah saya kasih widthnya, tapi nggak ngefek.
    mohon bantuannya…
    trima kasih banyak pak sebelumnya..

  12. didan mengatakan:

    kasus nya sama error kaya yang ditulis sama bahrul, script nya yang bapak kasih. itu kenapa yah ??

  13. thezaw mengatakan:

    Pak, saya coba script yang bapak kasih diatas, tapi headernya ada jg dihalaman kedua setelah diproses, gimana cara hilangin header dihalaman kedua, dan kolom nya bisa diperkecil tidak ya, karena terlalu besar dan boros kertas, apa yg mesti dirubah dari scriptnya. terima kasih ya pak.

  14. miff mengatakan:

    Saya juga ada problem seperti ini :

    Warning: Cannot modify header information – headers already sent by (output started at c:\apache\htdocs\belajar-laporan-via-php\laporan.php:10) in c:\apache\htdocs\belajar-laporan-via-php\fpdf\fpdf.php on line 1022
    FPDF error: Some data has already been output to browser, can’t send PDF file

    Hal tersebut gmn pembetulannya? Mohon bimbingan … :)

    Kalau boleh, jawabannya juga via email saya .. :)

  15. Ngawi mengatakan:

    Makasih bos, saya sedang belajar ini

  16. Putu mengatakan:

    kalo bisa, jangan ada spasi, atau html tag, atau character apapun sebelum PHP tag

    itu terjadi karena
    Ada Output Sebelum Header Di kirim

  17. iyan mengatakan:

    saya sudah mencoba script yang tapi ada yang saya rubah, trus ada error pesannya
    parse error…
    ini srciptnya
    SetFont(‘Arial’,'B’, 8);
    $this->Cell(19,1,’LAPORAN’,0,1,’C');
    }
    }

    $pdf = new PDF();
    $pdf->Open();
    $pdf->AddPage();

    //Ln() = untuk pindah baris
    $pdf->Ln();
    $pdf->SetFont(‘Arial’,'B’, 8);

    $pdf->Cell(1,1,’NO ‘,’LRTB’, 0, ‘C’);
    $pdf->Cell(3,1,’Nama ‘,’LRTB’, 0, ‘C’);
    $pdf->Cell(4,1,’Tempat ‘,’LRTB’, 0, ‘C’);
    $pdf->Ln();

    $pdf->SetFont(‘Arial’,'B’, 8);
    for($j=0;$jCell(1,1,$j+1,’LBTR’,0,’C’);
    $pdf->Cell(3,1,$cell[$j][1],’LBTR’,0,’C’);
    $pdf->Cell(4,1,$cell[$j][2],’LBTR’,0,’C’);
    $pdf->Ln();
    }

    //menampilkan output berupa halaman PDF
    $pdf->Output();
    ?>

    • einsteinkatro mengatakan:

      Uhm…Coba mas ingat2 mana yang code di rubah. atau kalo nggak ya code yang saya kasih di coba lage… hehehee…soalnya saya juga bingung kalo harus baca code sepotong potong gitu.. hehehe :)

    • l07any mengatakan:

      @ iyan

      Coba letakkan script:

      $pdf = new PDF();
      $pdf->Open();
      $pdf->AddPage();

      selalu pada AWAL source code-mu.

  18. ivan mengatakan:

    wew…keren

    artikel ini nih yg aq tunggu2..
    hehe..

    thanks…mas

  19. ade vini mengatakan:

    sama ky pertaanyaan anfe.kalo isi dari suatu record dari data base nya panjang, supaya bisa bergeser ke baris bawahnya gmn caranya? soalnya selama ini, isinya memanjang ke kanan, jadi menerjang ke kolom selanjutnya,dan menimpah tulisan yang ada di kolom selanjutnya..trus headernya juga jd muncul d halaman ke dua..mohon solusinya..terima kasih

  20. ians mengatakan:

    mas gimana cara mendapatkan “library FPDF”
    setelah aku klik “sini” nya musti kmna lagi?

  21. newbie mengatakan:

    salam kenal pak..sy mo tanya klo ingin nampilkan record tertentu saja tidak semuanya gimana Y? apakah fpdf mengenal data session? thanks y pak

  22. odi mengatakan:

    pak saya mana tanya ne.
    bagaimana cara untuk kita memperbesar dan mempercekil kolom2 pak atau kita buat besar kolom itu mengikuti besar data yg akan terisi pada kolom.

  23. soeandrie mengatakan:

    pak,,gimana y cara membuat laporan absensi kelas mingguan yg berisi 6 tgl ??

    krna stelah saya tmpilkan di web dgn PHP, saya akan membuat laporan tsb dgn format PDF.

    tolong penjelasannya..
    thanx.

  24. einsteinkatro mengatakan:

    @pak Soerandie : maaf pak, untuk saat ini saya mungkin tidak bisa banyak membantu… saya sudah lama nggak pegang PHP lage.. jadi musti refresh lage neh… :D

  25. Sam mengatakan:

    untuk error “Cannot modify header information”
    solusinya bisa tambahkan perintah :

    <?
    ob_start();

    – your script php

    ob_end_flush();

    <?

  26. robert mengatakan:

    Mau tanya,,,

    Bagaimana script cara masukkan data field dari database mysql jika ditaruh pada header untuk tampilan pdf.

  27. giana mengatakan:

    Sama pertanyaan nya klo misalkn isi recordnya panjang gmana caranya untuk berpindag baris . .

  28. jalil mengatakan:

    terima kasih artikelnya beguna untuk saya yg sedang bikin laporan untuk survey nih…

  29. iid mengatakan:

    mau tanya:
    kalaw isi di databasenya panjang, jadi kacau tampilannya, nah bagaimana caranya niar teks tu ngikutin lebar kolom, jadi kalaw kepanjangan si teksnya ke bawah:
    contoh :
    cccccccc
    cccccccc
    cccccccc
    ga jadi begini :
    cccccccccccccccccccccccccccccccccccccccccccc

    makasih, di tunggu jawabannya

  30. [...] Membuat Laporan PDF menggunakan PHP dan FPDF January 200834 comments 3 [...]

    • rajhief mengatakan:

      Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\coba menu\global.php:8) in C:\xampp\php\PEAR\fpdf\fpdf.php on line 1017
      FPDF error: Some data has already been output, can’t send PDF file
      itu error yang ada pak…bisa mohon dibantu gak?

  31. dans mengatakan:

    artikelnya sangat bagus,,
    tapi knpa ya muncul error kyak gini:
    Warning: Cannot modify header information – headers already sent by (output started at C:\xampp\htdocs\laporan\abc.php:1) in C:\xampp\php\PEAR\fpdf\fpdf.php on line 1022
    FPDF error: Some data has already been output to browser, can’t send PDF file

    scriptnya ini, ada yang salah g??
    mohon pencerahannya.^_^

    SetFont(“Times”,”B”,14); //jenis font : Times New Romans, Bold, ukuran 14

    //untuk warna background Header
    $this->SetFillColor(255,255,255);

    //untuk warna text
    $this->SetTextColor(0,0,0);

    //Menampilkan tulisan di halaman
    $this->Cell(19,1,”Data Pribadi”,”TBLR”,0,”C”,1); //TBLR (untuk garis)=> B = Bottom,
    // L = Left, R = Right
    //untuk garis, C = center
    }
    }

    //pengaturan ukuran kertas P = Portrait
    $pdf = new PDF(“P”,”cm”,”A4″);
    $pdf->Open();
    $pdf->AddPage();

    //Ln() = untuk pindah baris
    $pdf->Ln();
    $pdf->SetFont(“Times”,”B”,12);

    $pdf->Cell(1,1,”No”,”LRTB”,0,”C”);
    $pdf->Cell(3,1,”Nama”,”LRTB”,0,”C”);
    $pdf->Cell(4,1,”Alamat”,”LRTB”,0,”C”);
    $pdf->Cell(5,1,”Telepon”,”LRTB”,0,”C”);
    $pdf->Cell(6,1,”Jabatan”,”LRTB”,0,”C”);
    $pdf->Ln();

    $pdf->SetFont(“Times”,”",10);
    for($j=0;$jCell(1,1,$j+1,”LBTR”,0,”C”);
    $pdf->Cell(3,1,$cell[$j][0],”LBTR”,0,”C”);
    $pdf->Cell(4,1,$cell[$j][1],”LBTR”,0,”C”);
    $pdf->Cell(5,1,$cell[$j][2],”LBTR”,0,”C”);
    $pdf->Cell(6,1,$cell[$j][3],”LBTR”,0,”C”);
    $pdf->Ln();
    }

    //menampilkan output berupa halaman PDF
    $pdf->Output();

    ?>

  32. chuplizz mengatakan:

    pak ko liblary ny susah d download sh

  33. dini yulanzy mengatakan:

    tampilannya ko gede ya? cara ngecilinnya gmn >?

  34. hendramuktie mengatakan:

    makasih gan…saya coba duluu

  35. fransala mengatakan:

    pak bagai mana cara looping isi databasenya kesamping kanan bukan kebawah?

Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s