Cara menggunakan php print to printer

Cara menggunakan php print to printer

Ketika kita ingin mencetak data dengan php biasanya kita akan mencetak teks dalam bentuk PDF yang dimuat dalam browser lalu diprint atau menggunakan javascript print window. masalah terpecahkan memang tapi ada kalanya customer minta agar proses cetak data bisa dilakukan secara langsung atau direct print istilah nya seperti aplikasi penjualan yang dibuat dengan visual basic atau java misalnya.

sebenarnya PHP juga support untuk fitur direct print hanya saja kita butuh perjuangan agar fitur ini bisa digunakan jika kita menggunakan bahasa pemograman PHP.

Menginstall Extensi php_printer Di OS Windows
PHP sudah menyediakan extensi yang bernama php_printer untuk menyelesaikan masalah ini, hanya saja extension ini tidak terinstall secara otomatis ketika anda menginstall PHP baik secara terpisah atau menggunakan Xampp, jadi anda harus menginstallnya secara manual.

Untuk menginstall library ini, silahkan download library php_printer dan silahkan pilih file yang sesuai dengan versi PHP yang anda gunakan. jika sudah silahkan extract ke C:\xampp\php\ext.

Kemudian kita akan mendaftarkan extensi ini agar dikenali oleh PHP, cara nya silahkan buka file php.ini yang ada pada folder C:\xampp\php\ dan tambahkan script berikut ini :

Default

extension=php_printer.dll

extension=php_printer.dll
setelah itu jangan lupa lakukan save dan silahkan restart apache anda untuk mendapatkan perubahan, sekarang silahkan buka halaman phpinfo()

Cara menggunakan php print to printer

Seperti yang terlihat bahwa sekarang extension php_printer sudah terpasang dengan baik, langkah selanjutnya kita akan melakukan percobaan untuk print data secara langsung.

Script Cetak Data Secara Langsung Dengan PHP
sekarang kita akan membuats cript untuk mencetak data langsng ke printer ketika file ini dibuka, silahkan buat sebuah file baru dengan nama cetak_langsung.php dan tulis script berikut ini :

anda bisa mendapatkan informasi printer pada settingan devices and printer pada control panel, silahkan sesuaikan dengan printer yang ingin anda gunakan ketika mencetak data.

Cara menggunakan php print to printer

selanjutnya silahkan buka web browser anda dan akses file tersebut, jika script yang anda tulis sudah benar maka seharusnya printer akan langsung mencetak data yang anda tulis tadi.

Menampilkan Daftar Printer Yang Terhubung Dengan Komputer
Sekarang misalnya dalam satu network jaringan memiliki beberapa printer yang akan digunakan misalnya ingin mencetak data ke printer devisi IT, Devisi Keuangan dan sebagainya. kalau tadi kita langsung menetapkan printer yang akan digunakan maka sekarang kita akan menampilkan daftar printer yang terhubung lalu menampilkan nya untuk dipilih ketika akan mencetak data. silahkan buat sebuah file baru dengan nama display_printer.php dan tulislah script berikut :

Menampilkan List Printer
https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js

function cetak(){
var printer = $("#printer").val();
$.ajax({
url : "cetak_langsung.php",
type: "POST",
data : "nama_printer="+printer,
success: function(data, textStatus, jqXHR)
{
alert('Data Sudah DIcetak Ke Printer : '+printer)
}
});

}

Silahkan Pilih Printer :
<?php
$getprt = printer_list(PRINTER_ENUM_LOCAL);
$printers = serialize($getprt);
$printers = unserialize($printers);
//Menampilkan List Printer
echo '';
foreach ($printers as $PrintDest)
echo "" . explode(",", $PrintDest["DESCRIPTION"])[1] . "";
echo '';
?>

Cetak Data

jika sudah silahkan save untuk menyimpan perubahan, sekarang silahkan akses http://localhost/print/display_printer.php melalui web browser anda maka akan tampil seperti dibawah ini, untuk mencetak data anda bisa memilih list printer yang tersedia dan klik button cetak kemudia proses cetak data akan dilakukan secara direct dengan teknik ajax.

Cara menggunakan php print to printer

Cara menggunakan php print to printer

sumber: https://belajarphp.net/cetak-data-langsung-ke-printer-php/

Sebelumnya saya telah share bagaimana membuat interface untuk printer kasir dengan html pada artikel ini :
https://www.sistemit.com/membuat-faktur-dan-invoice-penjualan-dengan-php-dan-html/

Nah kali ini saya akan share bagaimana mengkoneksikan php ke dalam suatu printer kasir. Untuk mengkoneksikan suatu interface faktur ke printer kasir berbentuk thermal (yang biasa di indomar**) atau yang berbentuk dotmatriks (yang umumnya memiliki bunyi printer yang khas), kita dapat menggunakan dua metode.

1. Koneksi Printer Kasir dengan Menggunakan Google Chrome.

Berhubung php adalah salah satu pemrograman berbasis web, metode pertama adalah dengan menggunakan google chrome. Dengan menggunakan chrome kita tidak perlu lagi susah untuk membuat pengaturan dengan menggunakan bahsa pemrograman php. Namun cukum membuat interface html yang susuai dengan ukuran kertas pada printer yang drivernya telah kita install di komputer. Untuk design html anda dapat menggunakan design yang ada pada artikel saya sebelumnya ini :

https://www.sistemit.com/membuat-faktur-dan-invoice-penjualan-dengan-php-dan-html/

Ukuran font dan lebar dokunmen dapat anda sesuaikan. Berikut adalah contoh salah satu printer kasir saya yang saya sesuaikan :

Cara menggunakan php print to printer

Dalam gambar diatas saya menggunakan sebuah printer kasir yang sudah di install di komputer kasir. pada print preview google chrome kita tinggal menyesuaikan ukuran nya sesuai dengan ukuran kertas printer kasir yang ada.

Masing masing printer kasir memiliki ukuran yang berbeda beda.

adapun contoh source code untuk interface nya adalah sebagai berikut :

<html>
<head>
<title>Faktur Pembayaran</title>
<style>

#tabel
{
font-size:15px;
border-collapse:collapse;
}
#tabel  td
{
padding-left:5px;
border: 1px solid black;
}
</style>
</head>
<body style='font-family:tahoma; font-size:8pt;'>
<center><table style='width:350px; font-size:16pt; font-family:calibri; border-collapse: collapse;' border = '0'>
<td width='70%' align='CENTER' vertical-align:top'><span style='color:black;'>
<b>APOTEK GEMILANG FARMA</b></br>JL XXXXXXXXXXX XXXXXXX</span></br>


<span style='font-size:12pt'>No. : xxxxx, 11 Juni 2020 (user:xxxxx), 11:57:50</span></br>
</td>
</table>
<style>
hr { 
    display: block;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: auto;
    margin-right: auto;
    border-style: inset;
    border-width: 1px;
} 
</style>
<table cellspacing='0' cellpadding='0' style='width:350px; font-size:12pt; font-family:calibri;  border-collapse: collapse;' border='0'>

<tr align='center'>
<td width='10%'>Item</td>
<td width='13%'>Price</td>
<td width='4%'>Qty</td>
<td width='7%'>Diskon %</td>
<td width='13%'>Total</td><tr>
<td colspan='5'><hr></td></tr>
</tr>
<tr><td style='vertical-align:top'>3 WAY STOPCOCK</td>
<td style='vertical-align:top; text-align:right; padding-right:10px'>7.440</td>
<td style='vertical-align:top; text-align:right; padding-right:10px'>100</td>
<td style='vertical-align:top; text-align:right; padding-right:10px'>0,00%</td>
<td style='text-align:right; vertical-align:top'>744.000</td></tr>
<tr>
<td colspan='5'><hr></td>
</tr>
<tr>
<td colspan = '4'><div style='text-align:right'>Biaya Adm : </div></td><td style='text-align:right; font-size:16pt;'>Rp3.500,00</td>
</tr>
<tr>
<td colspan = '4'><div style='text-align:right; color:black'>Total : </div></td><td style='text-align:right; font-size:16pt; color:black'>747.500</td>
</tr>
<tr>
<td colspan = '4'><div style='text-align:right; color:black'>Cash : </div></td><td style='text-align:right; font-size:16pt; color:black'>1.000.000</td>
</tr>
<tr>
<td colspan = '4'><div style='text-align:right; color:black'>Change : </div></td><td style='text-align:right; font-size:16pt; color:black'>252.500</td>
</tr>
<tr>
<td colspan = '4'><div style='text-align:right; color:black'>DP : </div></td><td style='text-align:right; font-size:16pt; color:black'>0</td>
</tr>
<tr>
<td colspan = '4'><div style='text-align:right; color:black'>Sisa : </div></td><td style='text-align:right; font-size:16pt; color:black'>0</td>
</tr>
</table>
<table style='width:350; font-size:12pt;' cellspacing='2'><tr></br><td align='center'>****** TERIMAKASIH ******</br></td></tr></table></center></body>
</html>

2. Koneksi Printer Kasir dengan Metode Direct Print PHP.

Nah, langkah kedua adalah yang lebih rumit dari yang pertama karena menggunakan perintah php khusus agar aplikasi dapat langsung mengarah ke printer untuk mencetak struk atau dokumen lainnya. Kelebihan metode yang kedua ini adalah kecepatan printer lebih cepat karena tidak ada loading seperti google chrome yang sebelumnya. Meskipun pencetakan melalui print preview google chrome tergolong cepat. Adapun langkah untuk direct print melalui php adalah sebagiai berikut :

1. Download Library Printer (php_printer.dll) library_printer.

2. Extract file bernama php_printer.dll kedalam folder C:\xampp\php\ext

3. Sesuaikan nama printer di source code di bawah ini untuk mencetak langsung ke dalam printer.

<?php
/* contoh text */  
$text = 'Ini adalah contoh teks untuk direct printing';     
/* tulis dan buka koneksi ke printer */    
$printer = printer_open("EPSON L120 Series");  //sesuaikan dengan nama printer anda
/* write the text to the print job */  
printer_write($printer, $text);   
/* close the connection */ 
printer_close($printer);
?>

Ganti EPSON L120 Series sesuai dengan nama printer yang anda install.

Jika tidak ada error anda berhasil melakukan direct printing dengan php. Cara ini sangat jarang saya gunakan karena saya lebih sering menggunakan metode pertama. Namun jika diperlukan cara ini adalah merupakan cara yang paling mudah untuk melakukan direct printing.

Demikianlah tutorial kali ini, Sekian terimakasih.

Semoga bermanfaat.