Веб-термопринтер reactjs

Я установил реагирующее веб-приложение, моя цель - распечатать на термопринтере, распечатать компонент текстового значения (например, текст hello world), когда пользователь нажимает кнопку в веб-браузере, я использовал пакет из https://www.npmjs.com/package/node-thermal-printer, но когда я вижу пример отличается, как создание компонента реагирования, и я запутался, как вызвать нажатие кнопки из компонента, чтобы отправить очередь на печать с помощью термопринтера. Кто-нибудь может мне в этом помочь?

Пример для использования библиотеки. Вы не можете просто скопировать и вставить и ожидать, что это сработает.

weirdpanda 10.09.2018 08:42
1
1
5 170
1

Ответы 1

Я могу дать вам очень общее представление о том, как вы хотите это сделать. Начнем с базового компонента:

const printer = require( 'node-thermal-printer' ); 
class TPrinter extends React.Component {

  constructor( props ) {
      super( props );
      this._printer = printer.init( {
          type: 'epson',
          interface: '/dev/usb/lp0'
      } );
   }

   handleOnClick() {
       this._printer.alignCenter();
       this._printer.println("Hello world");
       this._printer.cut();
       this._printer.execute( ( err ) => {
           if( err ) { return console.log( err ); }
           console.log( 'Done!' );
       } );

  }

  render() {
    return (
        <button onClick={ this.handleOnClick }></button>
    )
  }
}

Тогда вы можете использовать это так:

<TPrinter />

И он покажет кнопку, которая при нажатии делает то, что вы хотите. Теперь, конечно, вы можете сделать это намного интереснее, используя props и те, которые используются в функции printer.init(), но вы понимаете основную суть.

Здравствуйте, спасибо за руководство, но когда я пробую код, возникает такая ошибка: ОШИБКА в ./node_modules/node-thermal-printer/interfaces/file.js Модуль не найден: Ошибка: не удается разрешить 'fs' в так далее

Effendy Salim 10.09.2018 09:12

Проверьте код модуля file. Вы получите проблему. Все очень просто.

weirdpanda 10.09.2018 09:14

Я думаю, что узел-термопринтер предназначен для работы на узле. В браузере модуль fs недоступен.

Cornel Janssen 10.09.2018 10:39

Это причина, но я хотел, чтобы он это понял, потому что он буквально просто скопировал код.

weirdpanda 10.09.2018 10:40

Можно ли вообще запустить это из браузера? Если нет, то какой смысл создавать компонент React, который зависит от этой библиотеки?

Osuriel 29.05.2021 08:27

@Osuriel - и да, и нет. Основная предпосылка, которую я пытаюсь здесь продемонстрировать, заключается в том, что пока у вас есть это символьное устройство (/dev/usb/lp0), вы можете отправлять команды независимо от того, откуда вы это начали. Я смог заставить это работать, если я определил простой TCP-прокси для символьного устройства и немного изменил код в основной библиотеке, чтобы разрешить HTTP-запросы, а не напрямую писать байтовые последовательности на устройстве.

weirdpanda 29.05.2021 18:13

Другие вопросы по теме