Mencetak Laporan ke Printer Menggunakan PHP dan MPDF

Cetak Laporan ke Printer dengan PHP Mencetak laporan ke printer menggunakan PHP memerlukan trik khusus. Ini dikarenakan mencetak sesuatu dari browser ke printer itu seringkali posisi layoutnya tidak sesuai seperti yang kita inginkan. Karena setiap browser memiliki setting margin, layout, skala yang bisa diatur-atur sendiri oleh pengguna browser di komputernya masing-masing.

Karena kondisinya demikian, maka kita tidak bisa mengandalkan pencetakan langsung ke halaman web — sebab layout bisa berubah-ubah. Solusinya adalah dengan mencetak ke .PDF. Sebab kalau sudah dicetak ke .PDF, maka di browser apapun akan mencetak sama persis seperti yang ada di file .PDF tersebut.

Salah satu library PDF untuk PHP yang menurut penulis cukup bagus untuk keperluan mencetak laporan adalah MPDF. Keunggulan MPDF ini adalah kemampuan mengkonversi format HTML menjadi PDF. Disamping itu ada fitur lain seperti penentuan ukuran kertas, setting header dan footer otomatis, dan sebagainya.

Library MPDF bisa di download gratis disini.

Di bawah ini ada contoh script sederhana bagaimana membuat tabel laporan menggunakan MPDF, yang nantinya bisa dicetak, bahkan disimpan dalam bentuk file .PDF

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
include('./mpdf57/mpdf.php');
 
ob_start();
?>
 
<style>
td {
    padding: 3px 5px 3px 5px;
    border-right: 1px solid #666666;
    border-bottom: 1px solid #666666;
}
 
.head td {
    font-weight: bold;
    font-size: 12px;
    background: #b7f0ff; 
}
 
table .main tbody tr td {
    font-size: 12px;
}
 
table, table .main {
    width: 100%;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-collapse: collapse;
    background: #fff;
}
 
h1 {
    font-size:20px;
}
</style>
 
<table class='main' repeat_header="1" cellspacing="0" width="100%" style="width:100%">
<thead>
<tr class="head">
    <td align='center' height="30">No.</td>
    <td>Kode Barang</td>
    <td align='center'>Nama Barang</td>
    <td align='right'>Saldo Stok</td>
</tr>
</thead>
 
<tbody>
<tr><td align='center'>1</td><td>PSG-001</td><td>Pasta Gigi</td><td align='right'>150</td></tr>
<tr><td align='center'>2</td><td>SBM-002</td><td>Sabun Mandi</td><td align='right'>63</td></tr>
<tr><td align='center'>3</td><td>PML-008</td><td>Pembersih Lantai</td><td align='right'>260</td></tr>
</tbody>
 
</table>
 
<?php
$content = ob_get_clean();
 
$header = '<table cellpadding=0 cellspacing=0 style="border:none;">
           <tr><td style="border:none;" align="left"><img src="img/logo-disini.jpg" width="42"></td>
           <td width="100%" style="border:none;"><h1>Laporan Stok Barang</h1></td></tr></table>';
 
$footer = '<table cellpadding=0 cellspacing=0 style="border:none;">
           <tr><td style="margin-right:-5px;border:none;" align="left">
           Dicetak: '.date("Y-m-d H:i").'</td>
           <td style="margin-right:-5px;border:none;" align="right">
           Halaman: {PAGENO} / {nb}</td></tr></table>';            
 
try {
    $mpdf=new mPDF('utf-8', "A4", 9 ,'Arial', 5, 5, 20, 5, 5, 4);
    $mpdf->SetTitle("Laporan Stok Barang");
    $mpdf->setHTMLHeader($header);
    $mpdf->setHTMLFooter($footer);
    $mpdf->WriteHTML($content);
    $mpdf->Output("laporan-stok.pdf","I");
} catch(Exception $e) {
    echo $e;
    exit;
}
?>

Contoh file .PDF yang dihasilkan dari script ini dapat dilihat disini.

Bila kita mengeset header dan footer dengan fungsi setHTMLHeader & setHTMLFooter, maka pada setiap halaman yang kita cetak, akan muncul header dan footer tersebut. Ini sangat berguna menampilkan judul laporan atau keterangan tambahan dibagian bawah halaman. Menjadikan laporan kita cantik dan rapi.

Bila anda ingin mengubah orientasi halaman menjadi Landscape di MPDF, caranya adalah dengan menambahkan “-L” pada ukuran kertas. Misalnya ingin menggunakan A4 Landscape, maka kodenya adalah “A4-L”. Untuk orientasi Potrait, biarkan saja tanpa tambahan apa-apa pada ukuran kertasnya.

1
$mpdf=new mPDF('utf-8', "A4-L", 9 ,'Arial', 5, 5, 20, 5, 5, 4);

Selamat mencoba.

Yang sedang trend:

Rating: