Javascript массив альтернативы? - PullRequest
0 голосов
/ 15 февраля 2019

Итак, я пытаюсь выполнить простую задачу печати жирного текста на внешний принтер.

В Android это делается следующим образом:

    byte[] arrayOfByte1 = { 27, 33, 0 };
    byte[] format = { 27, 33, 0 };

    format[2] = ((byte)(0x8 | arrayOfByte1[2]));
    os.write(format);

    os.write( string.getBytes());

    format[2] = ((byte)(arrayOfByte1[2]));
    os.write(format);

Что я считаюBOLD_ON + string + BOLD_OFF.

Теперь в Javascript я понятия не имею, как написать эквивалент.

Лучшее, что мне удалось сделать, это ниже, только жирный шрифт работает, и он не выключается.

var lines = [];
    lines.push("\x1b\x40"); // Init
    lines.push("\x1b\x21\x00"); // Normal
    lines.push("This is normal text\n");
    lines.push("\x1b\x45\x01"); // Bold On
    lines.push("This is bold text\n");
    lines.push("\x1b\x45\x00"); // Bold Off
    lines.push("\x1b\x35"); // Italic On
    lines.push("This is italic text\n");
    lines.push("\x1b\x34"); // Italic Off

        for (let index = 0; index < lines.length; index++) 
        {
             printer.write(lines[i]);
        }

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 15 февраля 2019

Я абсолютно не уверен, сработает ли это, но вы можете отправить эти байты на принтер?

var esc = "\u001B",
    lines = [
    ESC + "@",
    ESC + "E\u0001",
    ESC + "E\0"
];
function getBinaryRep(lines,joiner = "\n"){
    lines = lines.join(joiner);
    var blob = new Blob([lines],{type:"text/plain"}),
        reader = new FileReader;
    return new Promise(function(res,rej){
        reader.onload = function(){
            res(Array.from(new Uint8Array(this.result)));
        };
        reader.readAsArrayBuffer(blob);
    });
}

var x= getBinaryRep(lines);
x.then((x)=>console.log(x)); //[27, 64, 10, 27, 69, 1, 10, 27, 69, 0]

Внутри then вместо console.logging отправьте их на принтер, чтобы увидетьчто выходит.

...