node-escpos / driver

🖨️ ESC/POS Printer driver for Node.js.
Other
309 stars 30 forks source link

Support for pfd417 #97

Open MoaLaiSkirulais opened 2 months ago

MoaLaiSkirulais commented 2 months ago

pdf417(msg) {

    /** add */
    function add(arrayValues) {
        data.push(arrayValues);
    };

    var data = [];

    /** ESC POS */
    add([27, 116, 12]);

    /** QR Code: Select the model f=165 */
    add([0x1D, 0x28, 0x6B, 0x04, 0x00, 0x31, 0x41, 0x32, 0x00]);

    /** PDF417: Set the width of the module f=067 */
    add([0x1D, 0x28, 0x6B, 0x03, 0x00, 0x30, 0x43, 0x04]);

    /** PDF417: Set the row height f=068 */
    add([0x1D, 0x28, 0x6B, 0x03, 0x00, 0x30, 0x44, 0x01]);

    /** PDF417: Set the error correction level f=069 */
    add([0x1D, 0x28, 0x6B, 0x04, 0x00, 0x30, 0x45, 0x31, 0x00]);

    /** PDF417: Select the options f=070 */
    add([0x1D, 0x28, 0x6B, 0x03, 0x00, 0x30, 0x46, 0x00]);

    /** PDF417: Store the data in the symbol storage area f=080 */
    var dataLen = msg.length + 3;
    add([0x1D, 0x28, 0x6B, dataLen, 0x00, 0x30, 0x50, 0x30]);

    /** add content */
    var dataArray = [];
    for (var z in msg) {
        var letter = msg[z].charCodeAt(0);
        dataArray.push(letter);
    }
    add(dataArray);

    /** PDF417: Print the symbol data in the symbol storage area f=081 */
    add([0x1D, 0x28, 0x6B, 0x03, 0x00, 0x30, 0x51, 0x30]);

    /** write buffer */
    for (var x in data) {
        for (var y in data[x]) {
            this.buffer.writeUInt8(data[x][y]);
        }
    }

    return this;
}