Существует задача для pos-систем печатать что-либо автоматически: чеки, квитанции и т.п. Хочется, чтобы печать можно было инициировать из скриптов, но по дефолту все браузеры показывают диалог печати или предварительный просмотр.
Это неудобно при создании киосков.
Казалось бы уже неоднократно с таким сталкивались и должны были придумать подходящее решение. Но, увы, решение есть, а все советы о том, как его использовать даже на официальных форумах браузеров некорректны.
Что нам предлагают:
- Использовать опцию —disable-print-preview (или включать аналогичную настройку в about:flags)
- Вместе с ней включать опцию —kiosk-printing, которая в теории должна избавить нас от диалога выбора принтера.
А вот и нет. Эти опции нельзя использовать совместно. В чем суть: —disable-print-preview передает управление на диалог выбора принтера в системе, а это лишает нас контроля над выбором пользователя. Во многих (во всех) конфигурациях windows и linux нельзя избавиться от шага выбора принтера, а предварительный просмотр в хроме подменяет диалог выбора принтера.
Опция —kiosk-printing воздействует только на диалог предварительного просмотра chrome сразу печатая просматриваемый документ, а если мы его отключим, то и смысла в установке этого параметра нет.
Отсюда вывод: если вы хотите делать автоматическую печать, то используйте только —kiosk-printing.
Из минусов стоит отметить, что окошко предварительного просмотра все же на некоторое мгновение появляется на экране.
<!DOCTYPE html> <html> <head> <title>autoprint</title> </head> <body> data <script> window.addEventListener('load', function() { window.print() }) </script> </body> </html>
И это сработает — принтер начнет печатать.
UPD:
Chromium, issue 169004: баг с окном предварительного просмотра в режиме kiosk-printing (непофикшено)