Interfacing Python Dengan Zebra Barcode Printer

Printer Zebra saat ini menggunakan bahasa pemrograman ZPL2 yang dikembangkan oleh Zebra Technologies. ZPL2 ini telah memiliki lebih dari 170 perintah dan Commands dari bahasa ZPL2 itu sendiri selalu dimulai dengan simbol caret ^.

Command ZPL2:

1
2
3
4
^XA
^FO300,300
^BQN,2,10,M^FDarmannurhidayat.com^FS
^XZ

Untuk interfacing python ke zebra barcode printer cukup mudah, karena sudah banyak sekali package Python yang sangat memudahkan developer untuk melakukan encoding ZPL2, Seperti zpl atau simple_zpl2. Sedangkan pada artikel kali ini saya akan fokus membahas package simple_zpl2.

Pertama untuk install Simple ZPL2, jalankan command dibawah melalui terminal.

1
pip install simple_zpl2

Contoh script untuk membuat QR Code menggunakan Simple ZPL2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from simple_zpl2 import ZPLDocument, QR_Barcode

# membuat object dari class ZPLDocument
zpl = ZPLDocument()

# mengatur posisi qrcode
zpl.add_field_origin(300, 300)

# isi dari qrcode
qr_data = 'QA, TEST QR Code'
# Update: tambahan 'QA,' sebelum text QR Code bertujuan untuk menghindari
# tiga karakter awal yang hilang.

# mengatur model dan ukuruan qrcode
qr = QR_Barcode(qr_data, 2, 10, zpl._QR_ERROR_CORRECTION_STANDARD)
zpl.add_barcode(qr)

Untuk menampilkan hasil text yang sudah di encoding, bisa menggunakan cara dibawah ini:

1
print(zpl.zpl_text)

/interfacing-python-dengan-zebra-barcode-printer/preview-encoded.png
Hasil Encoding

Jika kamu ingin merender label dengan format PNG terlebih dahulu, untuk mengetahui hasil labelnya sebelum di print langsung, bisa dengan cara berikut:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from PIL import Image
import io

# Mengatur ukuran kertas label
png = zpl.render_png(label_width=4, label_height=6)
file = io.BytesIO(png)
img = Image.open(file)

# Membuka gambar dan penampil gambar default di sistem Kamu
img.show()

Untuk melakukan test print melalui terminal, kamu bisa menjalankan command seperti berikut:

1
python FILE_PRINT.py | lpr -l
Note
Jika tidak menambahkan command -l hasil print akan berantakan atau tidak akan diterjemahkan oleh sistem.

Text Orientation

Ketika kamu ingin mengubah rotasi pada text, kamu hanya perlu mengganti parameter yang sudah disediakan. Berikut beberapa contoh yang bisa digunakan untuk mengubah rotasi:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Orientation Normal
zpl.add_field_origin(300, 100)
zpl.add_font('C', zpl._ORIENTATION_NORMAL, 10)
zpl.add_field_data('armannurhidayat.com')

# Mengubah rotasi text 90°
zpl.add_field_origin(300, 100)
zpl.add_font('C', zpl._ORIENTATION_90, 10)
zpl.add_field_data('armannurhidayat.com')

# Mengubah rotasi text 180°
zpl.add_field_origin(300, 100)
zpl.add_font('C', zpl._ORIENTATION_180, 10)
zpl.add_field_data('armannurhidayat.com')

# Mengubah rotasi text 270°
zpl.add_field_origin(300, 100)
zpl.add_font('C', zpl._ORIENTATION_270, 10)
zpl.add_field_data('armannurhidayat.com')
Note
Sedangkan jika ingin menghubungkan dengan Website Odoo kamu perlu membuat aplikasi tersendiri sebagai jembatan antara Odoo dengan zebra printer menggunakan flask.

Untuk dokumentasi Simple ZPL2 lebih lengkap, kamu bisa mengunjungi website resminya disini: https://simple-zpl2.readthedocs.io.