Konversi HTML Ke PDF menggunakan Dompdf

Konversi HTML Ke PDF dengan Dompdf

Berhubung kemaren ada temen yang nanya bagaimana membuat file PDF menggunakan PHP ada baiknya saya tulis saja di blog ini sekalian buat referensi saya biar gak lupa, sebelum memulai alangkah baiknya saya sekedar mengingatkan bahwa PDF adalah format standar yang awalnya diciptakan oleh Adobe untuk mewakili teks dan gambar dalam dokumen, seperti faktur atau laporan dalam format PDF , sehingga dalam artikel ini kita akan membahas bagaimana kita dapat dengan mudah menghasilkan dokumen PDF menggunakan PHP .

Sebenarnya banyak library yang mampu menghasilkan mampu menghasilkan PDF dari HTML markup namun dalam tulisan saya ini saya hanya akan membahas sebuah library yang saya anggap mudah dalam penggunaannya yaitu DOMPDF. DOMPDF sendiri merupakan sebuah library yang mampu menghasilkan PDF dari HTML markup dan CSS styles dan hanya berfungsi untuk versi PHP 5.0 keatas.

DOMPDF tersedia di GitHub dan dapat diinstal dengan menggunakan Composer namun saya sarankan hanya menggunakan Git untuk menginstal DOMPDF karena lebih mudah. Jalankan perintah dibawah ini untuk mengunduh library DOMPFD

git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update

berikut sebuah contoh singkat yang akan menghasilkan PDF sederhana .

 <?php
set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
 
require_once "dompdf_config.inc.php";
 
$dompdf = new DOMPDF();
 
$html = <<<'ENDHTML'
<html>
 <body>
  <h1>Hello Dompdf</h1>
 </body>
</html>
ENDHTML;
 
$dompdf->load_html($html);
$dompdf->render();
 
$dompdf->stream("hello.pdf");

Untuk menggunakan library DOMPDF , hal utama yang terpenting adalah memanggil
dompdf_config.inc.php yang berisi sebagian besar konfigurasi DOMPDF . Hal ini juga memuat sebuah autoloader dan file konfigurasi kustom di mana kita dapat mengganti parameter konfigurasi default. HTML markup diberikan sebagai string dengan metode load_html ( ). Atau , kita dapat memuat markup dari sebuah file atau URL menggunakan load_html_file ( ).
render ()sendiri berfungsi untuk membuat HTML ke PDF sedangkan fungsi stream() befungsi mengirim PDF yang dihasilkan untuk ditampilkan di browser.

Contoh diatas akan menghasilkan sebuah file PDF yang sangat sederhana, tapi itu sangat tidak praktis menurut saya karena dalam kenyataannya kita akan sering ingin mengatur ukuran kertas, orientasi halaman, pengkodean karakter, dll dalam hal ini ada beberapa konfigurasi yang bisa kita atur untuk membuat DOMPDF lebih cocok untuk kebutuhan kita. semua fungsi tersebut terdapat didalam file dompdf_config.inc.php. Ada beberapa pengaturan penting yang wajib kita ketahui diantaranya :
  • DOMPDF_DEFAULT_PAPER_SIZE - mengatur ukuran kertas default untuk dokumen PDF. Ukuran kertas yang didukung dapat ditemukan di include / cpdf_adapter.cls.php (nilai default adalah "letter"). 
  • DOMPDF_TEMP_DIR - menentukan direktori sementara yang digunakan oleh DOMPDF. Pastikan lokasi ini ditulis oleh akun web server. 
  • DOMPDF_UNICODE_ENABLED - set apakah PDF menggunakan Unicode font (nilai default true). 
  • DOMPDF_ENABLE_REMOTE - memungkinkan dimasukkannya gambar atau CSS  (nilai default adalah false). 
  • DEBUG_LAYOUT - apakah akan membuat sebuah kotak di sekitar setiap blok HTML dalam file PDF yang berguna untuk debugging tata letak (nilai default adalah false).
Contoh diatas hanya akan menampilkan dokumen PDF pada browser, namun jika kita ingin menyimpan dokumen PDF yang dihasilkan ke disk selain mengirimnya ke browser. Berikut caranya:
 
<?php
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$output = $dompdf->output();
file_put_contents("/path/to/file.pdf", $output);

Dari contoh ini kita menggunakan fungsi output () yang mengembalikan PDF sebagai string.

DOMPDF juga memungkinkan kita untuk menambahkan header atau footer ke PDF dihasilkan dengan melekatkan script PHP dalam HTML. Namun untuk dapat mengunakan fungsi tersebut terlebih dahulu merubah DOMPDF_ENABLE_PHP menjadi true dengan merubah nilainya menjadi trrue kita bisa menambahkan teks, garis, gambar, persegi panjang, dll.
 
$html = <<<'ENDHTML'
<html>
 <body>
  <script type="text/php">
if (isset($pdf)) {  

    $footer = $pdf->open_object();

    // Menentukan Panjang dan lebar kertas
    $w = $pdf->get_width();
    $h = $pdf->get_height();

 // Mengatur Bentuk Font
    $font = Font_Metrics::get_font("helvetica", "normal");
    $txtHeight = Font_Metrics::get_font_height($huruf, 8);

    // Membuat garis panjang di bawah halaman
    $y = $h - 2 * $txtHeight - 24;
    $color = array(0, 0, 0);
    $pdf->line(16, $y, $w - 16, $y, $color, 1);    

    // Mengatur Nomor Halaman di kiri halaman
    $pdf->page_text(16, $y, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 8, $color);
    // Mengatut Teks
    $kata = "Test Menggunakan DOMPFD";
    $width = Font_Metrics::get_text_width($kata, $font, 8);
    $pdf->text($w - $width - 16, $y, $kata, $font, 8);

    $pdf->close_object();

   $pdf->add_object($footer, "all");
}
  </script>
  <h1>Dompdf Saya</h1>
 </body>
</html>
ENDHTML;

atau bisa juga dengan contoh seperti dibawah ini
 
<?php
$dompdf = new DOMPDF();
$dompdf->set_paper("A4");

$dompdf->load_html($html);
$dompdf->render();
$canvas = $dompdf->get_canvas();
$font = Font_Metrics::get_font("helvetica", "bold");
$canvas->page_text(16, 800, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 8, array(0,0,0));
$dompdf->stream("contohdompdf.pdf",array("Attachment"=>0));

Dengan catatan kode harus diletakkan setelah $ DOMPDF-> render ()

1 komentar : Leave Your Comments

  1. untuk membuat watermark dengan dompdf bagai mana cara nya ya
    mohon bimbingan nya
    terimakasih

    BalasHapus

Selanjutnya

Komentar Terbaru