Breaking

Sabtu, 17 Juni 2017

Ekspor File PDF pada Yii2

Hampir semua aplikasi web yang mengusung semangat paperless (mengurangi penggunaan kertas) menyediakan fitur untuk mengunduh berkas versi pdf. Berkas ini mencantumkan kode tertentu yang dapat ditunjukkan kepada pihak lain sebagai bukti bahwa yang bersangkutan sudah melakukan proses tertentu melalui aplikasi web tadi. Kali ini kita menggunakan framework Yii mencoba bereksperimen membuat fitur yang kurang lebih sama: ekspor file pdf.

Kita akan menggunakan pustaka mPDF. Anda dapat mengakses alamat github-nya di sini. Mari langsung saja kita praktikkan. Sebelum kita mulai, pastikan Anda sudah menginstal yii framework. Kalau kami sendiri menggunakan template intermediate yang dapat di-download di sini. Kemudian untuk menghindari permasalahan teknis yang mungkin akan muncul, Anda harus memastikan beberapa persyaratan penggunaan pustaka ini, yaitu versi PHP di atas 5.6 tetapi di bawah 7.3. Selain itu, ada syarat ekstensi PHP gd dan mbstring. Syarat ini untuk pustaka mPDF versi 7, seperti yang kami pakai untuk eksperimen kali ini. Adapun versi mPDF yang lebih rendah bisa Anda baca persyaratannya di sini.

Langkah pertama dalam eksperimen ini adalah menginstal pustaka mPDF. Gunakan composer, ketikkan perintah berikut pada aplikasi konsole anda dengan perintah berikut:

composer require mpdf/mpdf

Langkah kedua adalah bagaimana menggunakannya. Ada beberapa kemungkinan kita akan memanfaatkan pustaka ini. Pada contoh berikut ini, sintaks diletakkan di controller. Anggaplah file tersebut adalah SiteController.php (terletak di folder controllers).

Pastikan kita sudah mencantumkan use Mpdf\Mpdf as mPDF; di bagian awal class controller seperti contoh  berikut:



Selanjutnya kita akan membuat beberapa contoh. Namun, secara umum kode pertama yang harus Anda ketikkan adalah membuat instans baru dari mPDF sebagai berikut:

$mpdf = new mPDF();

Dengan sintaks di atas, mPDF akan membuat file temporary di folder vendor mpdf. Untuk itu, kami merekomendasikan untuk membuat settingan folder temporary seperti berikut:

$mpdf = new mPDF([
'tempDir' => __DIR__ . '/../runtime/tmp_mpdf',
]);

Berawal dari instans di atas, kita akan membuat beberapa contoh membuat file pdf berikut:

Membuat pdf dengan tag HTML biasa

$mpdf->WriteHTML('<h1>Contoh HTML</h1>');
$mpdf->Output();
exit;

Hasilnya akan tampil di-browser seperti berikut ini:


Membuat pdf dengan render partial

$mpdf->WriteHTML($this->renderPartial('pdf/partial'));
//pastikan sudah ada file views/pdf/partial.php
$mpdf->Output();
exit();

Membuat pdf dari tabel

Misalkan kita menggunakan cara render partial seperti contoh sebelumnya,

$mpdf->WriteHTML($this->renderPartial('pdf/table'));
$mpdf->Output();
exit();

Maka kita harus menyiapkan file views berisi tabel seperti berikut (file views/pdf/table.php):

<style type="text/css">
table{
border-collapse: collapse;
}

table, td, th {
border: 1px solid black;
}
thead, th {
background-color: lightgreen;
line-height: 200%;
}
</style>
<table width="100%">
<thead>
<tr><th>Kolom 1</th><th>Kolom 2</th></tr>
</thead>
<tbody>
<tr><td>Data 1</td><td>Data 2</td></tr>
<tr><td>Data 1-2</td><td>Data 2-2</td></tr>
<?php
for ($i=0; $i < 100; $i++) {
echo '<tr><td>Data 1-3</td><td>Data 2-3</td></tr>';
}
?>
</tbody>
</table>

Pada contoh tabel di atas, karena kita menggunakan <thead>, setiap ganti halaman header akan tercetak lagi.

Menambah halaman

$mpdf->WriteHTML('<h1>Halaman 1</h1>');
$mpdf->AddPage('L'); // menambah halaman dengan orientasi landscape
$mpdf->WriteHTML('<h2>Halaman 2</h2>');
$mpdf->Output();

Membuat file pdf yang otomatis ter-unduh

$mpdf->WriteHTML($this->renderPartial('pdf/partial'));
$mpdf->Output('mPDF_contoh.pdf', 'D'); //D = download
exit();

Menyimpan file pdf di server.

$mpdf->WriteHTML('<h1>File PDF yang disimpan</h1>');
$mpdf->Output('file_mpdf.pdf', 'F'); //F = Fie, file ada di folder web
echo 'Silakan buku di <a href="/file_mpdf.pdf">web/file_mpdf.pdf</a>';
exit();

Mengirim email file pdf

$mpdf->WriteHTML('<h1>File PDF yang dikirim via email</h1>');
$content = $mpdf->Output('', 'S'); //S = string
$email = Yii::$app->mailer->compose()
->setTo('belakode@gmail.com')
->attachContent($content, ['fileName' => 'attach_mpdf', 'contentType' => 'application/pdf'])
->send();
echo 'email terkirim dengan attachment.';
exit();

Demikian contoh-contoh membuat file pdf dengan pustaka mpdf. Semoga bermanfaat. Referensi selengkapnya dapat Anda baca di https://mpdf.github.io.

    Tidak ada komentar:

    Posting Komentar

    close