Это сервис Api для печати чеков на основе php laravel, использующий библиотеку mike42/escpos-php для php.
Содержит независимый распакованный php7.3.4, не требующий отдельной установки среды php.
Скачайте zip-пакет с исходным кодом.
Распакуйте исходный код (обратите внимание: не распаковывайте в путь с китайскими символами).
Запустите quick-start.bat (откройте страницу конфигурации) или printer-start.bat (не открывая страницу конфигурации) (с окном командной строки).
Или запустите как службу Windows:
Выполните system-service-install.bat (выполняется только один раз, после этого запускается автоматически при включении компьютера: работает в фоновом режиме без окна).
После установки служба автоматически запустится и откроет страницу настройки печати. URL страницы настройки печати: http://localhost:8077/printer-setting
Страница конфигурации:
Эффект печати:
Перед использованием убедитесь, что принтер чеков установлен и драйвер установлен.
Добавьте принтер: выберите установленный принтер чеков и нажмите «+». Если в списке нет принтеров, новый добавленный принтер станет принтером по умолчанию. Примечание: «Виртуальный принтер» добавить нельзя.
Перейдите на страницу предварительного просмотра, нажав кнопку предварительного просмотра. Нажмите кнопку печати справа.
GET http://localhost:8077/api/printer/get-local-printers
GET http://localhost:8077/api/printer/get-config
POST http://localhost:8077/api/printer/set-printer-config
Параметры: JSON
{"printer_name":"POS-58","is_default":true}
POST http://localhost:8077/api/printer/set-defult-printer
Параметры: JSON
{"printer_name":"POS-58"}
Поскольку поддержка различных функций принтерами чеков слишком различается, реализована только печать изображений, которая поддерживается 80% принтеров чеков. Тестовая страница использует html для преобразования canvas в изображение для печати.
POST http://localhost:8077/api/job/print-image-data-url
Параметры: JSON
printer_name: можно не передавать или оставить пустым, будет использоваться принтер по умолчанию
{"printer_name":"POS-58", "image_data":"data:image/png;base64,..."}
При использовании HTML или HTML-шаблонов для печати можно использовать class qrcode и barcode для маркировки QR-кода и штрих-кода. Дополнительные параметры конфигурации QR-кода и штрих-кода можно передать через атрибут data узла.
Пример: QR-код: содержание: https://gitee.com/wuxue107/ Дополнительные атрибуты QR-кода см. в: https://github.com/davidshimjs/qrcodejs
http://127.0.0.1:8077/api/job/print-html
Запрос: POST-JSON:
{"html":"<p>HELLO NOP</p>","printer_name":null}
Ответ:
{
"code": 0,
"msg": "Операция прошла успешно",
"data": {
"task_id": 14
}
}
http://127.0.0.1:8077/api/job/print-tpl
Запрос: POST-JSON:
{"printer_name":null,"tpl_name":"simple-tpl","tpl_params":{"user":"NOP"}}
Ответ:
{
"code": 0,
"msg": "Операция прошла успешно",
"data": {
"task_id": 14
}
}
Шаблоны используют синтаксис шаблонов lodash.
http://127.0.0.1:8077/api/print-tpl/save
Запрос: POST-JSON:
{"attrs":{"tpl_name":"simple-tpl","tpl_content":"<p>HELLO <%=user%></p>","params_examples":"{\"user\":\"WORLD\"}"}}
Ответ:
{
"code": 0,
"msg": "Операция прошла успешно",
"data": {
"tpl_name": "simple-tpl",
"tpl_content": "<p>HELLO <%=user%></p>",
"params_examples": "{\"user\":\"WORLD\"}",
"updated_at": "2021-02-19T16:49:38.000000Z",
"created_at": "2021-02-19T16:49:38.000000Z",
"id": 2
}
}
http://127.0.0.1:8077/api/print-tpl/get
Запрос: POST-JSON:
{"tpl_name":"simple-tpl"}
Ответ:
"data": {
"tpl_name": "simple-tpl",
"tpl_content": "<p>HELLO <%=user%></p>",
"params_examples": "{\"user\":\"WORLD\"}",
"updated_at": "2021-02-19T16:49:38.000000Z",
"created_at": "2021-02-19T16:49:38.000000Z",
"id": 2
}
}
http://127.0.0.1:8077/api/print-tpl/delete
Запрос: POST-JSON:
{"tpl_name":"simple-tpl"}
Ответ:
{
"code": 0,
"msg": "Операция прошла успешно",
"data": null
}
Запустите: printer-start.bat
Запустите: printer-stop.bat
Запустите: system-service-install.bat
Запустите: system-service-uninstall.bat
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )