Браузеры позволяют отправить на печать документ с предпросмотром. Это правильно, ведь в веб странице нету разметок, вам также нужно выбрать принтер и формат бумаги.
Существуют даже платные драйвера, способные выводить печать напрямую. Настолько это проблема не простая
Но когда печатать вам нужно массово и настройки вы все себе уже настроили - есть способ организовать это дело через дополнительные инструменты
Как же так происходит что десктопные программы могут печатать напрямую, а браузер не умеет. Мы хотим сами управлять диалоговыми окнами и то если в них будет необходимость.
Формат бумаги и прочие вопросы можно решить, сгенерировав на сервере заранее ПДФ файл, но отправить его на печать без окна предпросмотра всё равно нельзя стандартно.
Для решения проблемы нам потребуется серверное приложение, и это приложение будет находиться на компьютере который будет подключен к принтеру (то есть текущем). Совершенно не важно на каком языке его написать
Если вы хорошо знаете веб - то рекомендую node.js
Если вы пишите на php - рекомендую go, либо поднять веб сервер nginx + собрать php
В остальных случаях вы можете писать от Java до C#, не важно
Механизм который нужно будет создать следующий:
- Программа поднимает сервер, который слушает http обращения по любому свободному порту
- При поступлении сообщения по порту - принимает файл, или параметры для генарации файла (сейчас уже pdf может генериться на стороне клиента через javascript если что)
- сохранить файл на жестком диске
- выполнить вызов командной строки команды `lp` с указанием принтера и других особенностей (команда отправляющая на печать указаный файл с указаными параметрами)
Вот и весь скрипт.
Из нюансов - возможно нужно будет решить проблему с CORS - просто передав заголовок, либо отправлять запрос напрямую через клиента через iframe либо создание формы, т.к. стандартные HttpRequests будут просить CORS
На стороне клиента - делаете http запрос на localhost по указанному открытому порту
Вот и всё
желаю удачи