Membuat PDF di PHP


Dalam membuat aplikasi berbasis web, kadang-kadang kita perlu menghasilkan dan menampilkan file PDF, misalnya untuk membuat halaman yang berisi laporan.   Bila di Java terdapat framework iText, maka di PHP kita dapat menggunakan PDFlib, yang dapat di-download di http://www.pdflib.com/.  Berhubung metode extensi PHP yang berbeda tergantung pada platform, tulisan ini mengandaikan PHP di-install di platform Windows.

Langkah pertama yang harus dilakukan adalah mengetahui versi PHP.  Hal ini dapat dilakukan dengan membuka command prompt dan mengetik seperti:

C:\Programs\PHP\bin>php -v
PHP 5.3.5 (cli) (...)
...

Setelah mengetahui versi PHP, buka file konfigurasi PHP.  File ini terletak di lokasi direktori dimana PHP di-install dan memiliki nama php.ini.   Gunakan fitur search di text editor untuk mencari kata extension_dir.  Ini adalah lokasi dimana kita harus meletakkan file binary PDFlib nantinya.   Defaultnya adalah sebuah folder bernama ext.  Bila ingin menyertakan direktori baru, lokasi lengkap direktori tersebut harus ditambahkan disini.

Lalu, pada extract ZIP PDFlib yang telah di-download pada lokasi sementara, kemudian buka folder bind, lalu folder php.  Setelah itu, akan terdapat beberapa folder seperti php-510, php-520 dan php-530.  Ada beberapa versi dari folder tersebut, misalnya php-520-nozts adalah versi PDFlib yang di-compile tanpa dukungan multithreading.  Zts disini merujuk pada Zend Thread Safety.  Pada PDFLib untuk PHP 5.3, terdapat folder seperti php-530-nozts_VS9.  VS9 disini merujuk pada versi compiler Visual Studio yang dipakai.  Folder yang dipakai harus disesuaikan dengan versi PHP, dan untuk PHP 5.3, juga harus sesuai dengan compiler yang dipakai untuk men-build PHP tersebut (pada waktu men-download PHP, terdapat beberapa versi compiler yang dapat dipilih).

Copy file libpdf_php.dll di folder yang telah dipilih ke lokasi extension directory sesuai dengan yang tertera di php.ini.  Setelah itu, tambahkan baris berikut ini di file php.ini:

extension=libpdf_php.dll

Bila web server tidak dapat dijalankan seperti biasa, pastikan file DLL dipilih dari directory yang tepat, sesuai dengan versi PHP, dukungan threading dari PHP, dan versi compiler yang dipakai untuk men-compile PHP.

Sekarang buat  dan jalankan program PHP seperti ini:

<?php
try {
  $p = new PDFLib();
  if ($p->begin_document("","")==0) {
    die("Error: " . $p->get_errmsg());
  }
  $p->begin_page_ext(595, 842, "");
  $font = $p->load_font("Helvetica-Bold", "winansi", "");
  if ($font==0) {
    die("Error: " . $p->get_errmsg());
  }
  $p->setfont($font, 24.0);
  $p->set_text_pos(50, 700);
  $p->show("Hello World!");
  $p->continue_text("(says PHP)");
  $p->end_page_ext("");
  $p->end_document("");
  $buf = $p->get_buffer();
  $len = strlen($buf);

  header("Content-type: application/pdf");
  header("Content-Length: $len");
  header("Content-Disposition: inline; filename=hello.pdf");
  print $buf;
} catch (PDFlibException $e) {
  die("Terjadi Kesalahan:\n[" . $e->get_errnum() . "] [" . $e->get_errmsg() . "]\n");
} catch (Exception $e) {
  die($e);
}
$p = 0;
?>

Browser yang sudah dilengkapi plugin Adobe Acrobat Reader akan langsung menampilkan output PDF dari halaman PHP di atas, dan browser yang belum mendukung Adobe Acrobat Reader akan meminta pengguna untuk mendownload file PDF bernama hello.pdf.  Perlu diperhatikan bahwa PDFlib tidak gratis untuk penggunaan komersial.  Bila ingin menghilangkan tulisan “www.pdflib.com” di setiap output PDF, seseorang harus meminta evaluation key dengan menghubungi sales@pdflib.com.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

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

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: