Печать штрих-кодов с помощью QZ-Tray

Я пытаюсь напечатать штрих-код с помощью QZ-Tray, однако не могу найти хороший пример для этого, я пробовал код отсюда https://groups.google.com/forum/#!topic/qz-print/5ybFBj4S9LA, где начинается с этого кода:

qz.appendHex('x1Bx40'); // init 

Однако браузер выдает ошибку, что qz.appendHex is not a function и т.д.

Вот мой код, который может печатать, но только RAW-данные:

function printBarcode() {
    console.log("Print barcode");
    var config = getUpdatedConfig();
    var data = [
        'Raw Data\n',
        'More Raw Data\n',
        'Even More Raw Data\n'
    ];
    qz.print(config, data).catch(function(e) { console.error(e); });
}

Что я могу сделать, чтобы этот код распечатал штрих-код?


person quarks    schedule 20.10.2016    source источник


Ответы (3)


qz.appendHex не является функцией и т. д.

Это старый код для QZ Tray 1.9. Это изменено в версии 2.x.

Решение зависит от возможностей вашего принтера, но это должно помочь вам начать работу. Пожалуйста, обратитесь к руководству по программированию ESC/P для дальнейшего использования.

//barcode data
var code = '12345';

//convenience method
var chr = function(n) { return String.fromCharCode(n); };

var barcode = '\x1D' + 'h' + chr(80) +   //barcode height
    '\x1D' + 'f' + chr(0) +              //font for printed number
    '\x1D' + 'k' + chr(69) + chr(code.length) + code + chr(0); //code39

qz.websocket.connect().then(function() {
   var config = qz.configs.create("Epson TM88V");
   return qz.print(config, ['\n\n\n\n\n' + barcode + '\n\n\n\n\n']);
}).catch(function(err) { alert(err); });
person tresf    schedule 20.10.2016
comment
Спасибо за эту @qz-поддержку, хотя у нас уже есть рабочий код печати штрих-кода, как указано в моем ответе, мы попробуем это, кстати, можете ли вы также помочь с этой другой проблемой: stackoverflow.com/questions/ 40168017/ - person quarks; 21.10.2016

Вот код, который работал у меня:

// Print Barcode

    function textToBase64Barcode(text){
        var canvas = document.createElement("canvas");
        JsBarcode(canvas, text, {format: "CODE39"});
        return canvas.toDataURL("image/png");
    }
    function printBarcode() {
        console.log("Print barcode");
        var config = getUpdatedConfig();
        var value = $("#barcode_num").val(); // change this with barcode number
        var base64 = textToBase64Barcode(value);
        var barcodeImg = base64.split(",")[1];
        var printData = [
            {
                type: 'image',
                format: 'base64',
                data: barcodeImg
            }
        ];
        qz.print(config, printData).catch(displayError);
    }
    // End Print Barcode

Использование библиотеки JavaScript JsBarcode.

person quarks    schedule 20.10.2016

@xybrek или @tresf знаете ли вы, как совместить свой ответ с необработанной печатью ESC / POS?

ниже с использованием необработанного изображения, как насчет JsBarcode? я использовал JsBarcode. Я могу создать штрих-код, но когда я пытаюсь объединить его с необработанными данными, это не работает. Моя версия Qz 2.1

var config = qz.configs.create("Printer Name");

var data = [
   { type: 'raw', format: 'image', data: 'assets/img/image_sample_bw.png', options: { language: "ESCPOS", dotDensity: 'double' } },
   '\x1B' + '\x40',          // init
   '\x1B' + '\x61' + '\x31', // center align
   'Beverly Hills, CA  90210' + '\x0A',
   '\x0A',                   // line break
   'www.qz.io' + '\x0A',     // text and line break
   '\x0A',                   // line break
   '\x0A',                   // line break
   'May 18, 2016 10:30 AM' + '\x0A',
   '\x0A',                   // line break
   '\x0A',                   // line break    
   '\x0A',
   'Transaction # 123456 Register: 3' + '\x0A',
   '\x0A',
   '\x0A',
   '\x0A',
   '\x1B' + '\x61' + '\x30', // left align
   'Baklava (Qty 4)       9.00' + '\x1B' + '\x74' + '\x13' + '\xAA', //print special char symbol after numeric
   '\x0A',
   'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' + '\x0A',       
   '\x1B' + '\x45' + '\x0D', // bold on
   'Here\'s some bold text!',
   '\x0A',
   '\x1B' + '\x45' + '\x0A', // bold off
   '\x1D' + '\x21' + '\x11', // double font size
   'Here\'s large text!',
   '\x0A',
   '\x1D' + '\x21' + '\x00', // standard font size
   '\x1B' + '\x61' + '\x32', // right align
   '\x1B' + '\x21' + '\x30', // em mode on
   'DRINK ME',
   '\x1B' + '\x21' + '\x0A' + '\x1B' + '\x45' + '\x0A', // em mode off
   '\x0A' + '\x0A',
   '\x1B' + '\x61' + '\x30', // left align
   '------------------------------------------' + '\x0A',
   '\x1B' + '\x4D' + '\x31', // small text
   'EAT ME' + '\x0A',
   '\x1B' + '\x4D' + '\x30', // normal text
   '------------------------------------------' + '\x0A',
   'normal text',
   '\x1B' + '\x61' + '\x30', // left align
   '\x0A' + '\x0A' + '\x0A' + '\x0A' + '\x0A' + '\x0A' + '\x0A',
   '\x1B' + '\x69',          // cut paper (old syntax)
// '\x1D' + '\x56'  + '\x00' // full cut (new syntax)
// '\x1D' + '\x56'  + '\x30' // full cut (new syntax)
// '\x1D' + '\x56'  + '\x01' // partial cut (new syntax)
// '\x1D' + '\x56'  + '\x31' // partial cut (new syntax)
   '\x10' + '\x14' + '\x01' + '\x00' + '\x05',  // Generate Pulse to kick-out cash drawer**
                                                // **for legacy drawer cable CD-005A.  Research before using.
                                                // see also http://keyhut.com/popopen4.htm
];

qz.print(config, data).catch(function(e) { console.error(e); });
person Avian Driyanto    schedule 24.07.2019
comment
Вы должны опубликовать это как вопрос SO вместо ответа и пометить его QZ - person quarks; 25.07.2019