PHP-GTK2 Newsletter
How to print barcode using GS k (ESC/POS Command) |
| Written by kksou | ||
| Wednesday, 08 October 2008 | ||
|
This article shows you how to use the GS k (ESC/POS Command) to print barcodes on the receipt printer. It's a bit complicated because there are different rules for the different barcode systems. Note: For all the following sample codes, I assume that the barcode is stored in the variable EAN13 (JAN13)Sample code:
fwrite($handle, chr(hexdec('1D')).'k'.chr(2)); // EAN13
fwrite($handle, $barcode.chr(0));
Note that The 13th character for EAN13 is the check digit. On a standard barcode scanner, there is usually a dip switch that allows you to set whether to return the check digit. If you set it to return the check digit, the barcode scanner will give 13 digits. Otherwise, it will return only 12 digit. As for the receipt printer, you can send in the barcode with or without the check digit. You may want to refer to the following for a complete sample code: Sample Code 479: How to print barcode label - Part 1 - EAN13 barcodes? UPC-ASample code:
fwrite($handle, chr(hexdec('1D')).'k'.chr(0)); // UPC-A
fwrite($handle, $barcode.chr(0));
Note that The 12th character for UPC-A is the check digit. On a standard barcode scanner, there is usually a dip switch that allows you to set whether to return the check digit. If you set it to return the check digit, the barcode scanner will give 12 digits. Otherwise, it will return only 11 digit. As for the receipt printer, you can send in the barcode with or without the check digit. You may want to refer to the following for a complete sample code: Sample Code 480: How to print barcode label - Part 2 - UPC A barcodes? UPC-ESample code:
fwrite($handle, chr(hexdec('1D')).'k'.chr(1)); // UPC-E
fwrite($handle, $barcode.chr(0));
Important!!! the This is one of the most tricky ones! The UPC-E barcode is the short form representation of a UPC number. It reduces the data length from 12 digits to 6 digits by compressing the extra zeros as shown below. It is generally used on products with very small packaging where a full UPC-A barcode couldn't reasonably fit. Try scanning a UPC-E barcode on a barcode scanner. How many characters did it return? If you have turned on the check digit, most likely you'll get 8 characters. However, on a receipt printer, it is required that the barcode be 11 or 12 characters. If you pump the 8 characters (i.e. the numbers returned directly from the barcode scanner) directly into the receipt printer, the printer will refuse to print any barcode! The solution is to convert the UPC-E barcode to the UPC-A format first before you can print the barcode. The complete solution is given in the following sample code: Sample Code 481: How to print barcode label - Part 3 - UPC E barcodes? EAN8 (JAN8)Sample code:
fwrite($handle, chr(hexdec('1D')).'k'.chr(3)); // EAN8
fwrite($handle, $barcode.chr(0));
Note that |
||



