Печать в Chrome без подтверждения
Существует задача для 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 (непофикшено)
Категории: Разработка HowTo