Как узнать, что web-страница была распечатана на принтере
В процессе создания одной из рабочих систем, с подачи начальства возникла очень необычная задача. Организационные подробности описывать не буду, только техническую сторону. В системе пользователю генерируется некий документ, который он должен распечатать. Задача заключалась в том, что система должна была узнать, что документ был распечатан. Причем просто просмотр версии для печати на экране не считается, требовалось определить именно факт отправки документа на принтер. После недолгих размышлений пришло на ум следующее решение. На страницу документа, которая должна быть распечатана, добавляется примерно следующий код:Code (HTML) : Убрать нумерацию
- <style type="text/css">
- .print_hook {
- display: inline-block;
- }
- @media print {
- .print_hook {
- background:url('/print_hook.php?id=123');
- }
- }
- </style>
- <div class="print_hook"></div>
Стили для перехватчика динамически генерируются на странице, во внешних файлах и в глобальных таблицах CSS их хранить не надо. Способ кроссбраузерный, работает везде, где поддерживаются CSS3 Media Queries и не требует включения никаких скриптов на стороне клиента.
В полной мере задача не решилась, потому что пользователь может просто открыть в браузере предварительный просмотр страницы, а потом закрыть его, не отправив фактически документ на печать. При этой операции также задействуется перехватчик, поскольку браузер отрисовывает страницу, как она бы выглядела на печати. Но более лучшего способа я так и не придумал, так что после согласования с начальством остановились на таком решении. Может быть пригодится кому-нибудь еще.
Просмотров: 1997 | Комментариев: 2
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(03.10.2017 в 17:19):
Внимательно прочитай первый абзац. Суть в том, что печатается некий документ по уникальной ссылке, и потом юзеру можно предъявлять, что он его распечатал. Подробности, извини, останутся за кадром.
Иван
(03.10.2017 в 16:53):
А где это может пригодиться?
Добавить комментарий
Заполните форму для добавления комментария