Blog. Just Blog

Web-мастеру и не только

Полезные решения для Web-мастеров
Web-мастеру и не только - RSS-канал Web-мастеру и не только - Карта сайта

Как узнать, что web-страница была распечатана на принтере

13.05.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
В процессе создания одной из рабочих систем, с подачи начальства возникла очень необычная задача. Организационные подробности описывать не буду, только техническую сторону. В системе пользователю генерируется некий документ, который он должен распечатать. Задача заключалась в том, что система должна была узнать, что документ был распечатан. Причем просто просмотр версии для печати на экране не считается, требовалось определить именно факт отправки документа на принтер. После недолгих размышлений пришло на ум следующее решение. На страницу документа, которая должна быть распечатана, добавляется примерно следующий код:
  1. <style type="text/css">
  2. .print_hook {
  3.     displayinline-block;
  4. }
  5. @media print {
  6.     .print_hook {
  7.         background:url('/print_hook.php?id=123');
  8.     }
  9. }
  10. </style>
  11. <div class="print_hook"></div>
Поясню словами. Вспомогательному элементу div назначается фоновый рисунок в виде скрипта-перехватчика. Стили, определенные через @media print, задействуются только при печати, просто при просмотре страницы фоновый рисунок дергаться не будет. В параметрах перехватчику передаются определенные значения, по которым идентифицируется печатаемый документ. Файл-перехватчик print_hook.php, к которому выполняется обращение, разбирает переданные ему параметры, заносит в базу необходимые статистические данные, а затем выдает в качестве фона прозрачный однопиксельный GIF.

Стили для перехватчика динамически генерируются на странице, во внешних файлах и в глобальных таблицах CSS их хранить не надо. Способ кроссбраузерный, работает везде, где поддерживаются CSS3 Media Queries и не требует включения никаких скриптов на стороне клиента.

В полной мере задача не решилась, потому что пользователь может просто открыть в браузере предварительный просмотр страницы, а потом закрыть его, не отправив фактически документ на печать. При этой операции также задействуется перехватчик, поскольку браузер отрисовывает страницу, как она бы выглядела на печати. Но более лучшего способа я так и не придумал, так что после согласования с начальством остановились на таком решении. Может быть пригодится кому-нибудь еще.

Просмотров: 969 | Комментариев: 2

Как отследить потерю фокуса вкладки в браузере

23.04.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Как отследить потерю фокуса вкладки в браузере

В современных браузерах есть очень полезный инструмент - Page Visibility API. Он позволяет узнать, когда вкладка с веб-страницей видна пользователю, а когда пользователь находится на другой странице. Через Page Visibility API можно установить обработчик для реагирования на изменение состояния видимости. Для чего это надо? Например, если сайт открыт на мобильных устройствах, то при переходе на другую вкладку есть смысл отключить ненужные сетевые запросы, всякие спецэффекты, динамическое обновление контента и прочие ресурсоемкие операции. В веб-приложениях, например, можно сделать автоматическое сохранение незаполненной формы при переходе на другую вкладку. На моем сайте при потере фокуса вкладки активируется опция "камуфляж".

Читать статью целиком »
Просмотров: 1835 | Комментариев: 0

Ресайз изображений с размытым фоном на PHP

17.04.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Ресайз изображений с размытым фоном на PHP

Некоторое время назад я обратил внимание на интересный графический эффект, который используется в телевидении и социальных сетях. Он применяется, например, для разворачивания вертикального видео на горизонтальный экран без черных полос по бокам, для подгона разномастных изображений под единый формат. Суть этого эффекта заключается в том, что оригинальный кадр или снимок растягивается под нужный размер по ширине или высоте, из его середины вырезается участок нужного размера и сильно размывается. На полученную подложку накладывается оригинальное изображение.

Читать статью целиком »
Просмотров: 1590 | Комментариев: 7

Негатив изображения на PHP

04.03.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
В PHP есть штатная функция ImageFilter. С параметром IMG_FILTER_NEGATE она преобразует изображение в негатив. Но, как выяснилось на практике, эта функция косячно работает с некоторыми картинками при последовательном преобразовании изображения. Пришлось быстренько набросать свой вариант скрипта, вот что у меня получилось:
  1. // Файл для обработки
  2. $im=ImageCreateFromJPEG('test.jpg');
  3.  
  4. // Размеры изображения
  5. $width=ImageSX($im);
  6. $height=ImageSY($im);
  7.  
  8. for ($x=0$x<$width$x++) {
  9.     for ($y=0$y<$height$y++) {
  10.         $rgb=ImageColorAt($im,$x,$y);
  11.  
  12.         $R=($rgb >> 16) & 0xFF;
  13.         $G=($rgb >> 8) & 0xFF;
  14.         $B=$rgb 0xFF;
  15.  
  16.         // Противоположный цвет
  17.         $Rx=255-$R;
  18.         $Gx=255-$G;
  19.         $Bx=255-$B;
  20.  
  21.         // Добавить цвет в палитру и установить новый цвет пиксела
  22.         $new_color=ImageColorAllocate($im$Rx$Gx$Bx);
  23.         ImageSetPixel($im,$x,$y,$new_color);
  24.     }
  25. }
  26.  
  27. // Прибраться за собой
  28. ImageDestroy($im);
Код минимально необходимый, никаких проверок на наличие файла или корректность его внутреннего формата не производится, это вы можете сделать самостоятельно.

Просмотров: 847 | Комментариев: 0

Сервисы картинок-placeholder'ов для сайтов

21.01.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Сервисы картинок-placeholder'ов для сайтов

Вот и обещанная статья об онлайн-сервисах, предоставляющих картинки-пустышки для размещения на сайтах. Повторюсь, для чего это надо. В процессе разработки сайтов могут потребоваться изображения нейтральной или какой-то конкретной тематики, чтобы наполнить макет и показать его заказчику. Чтобы не тратить время на поиск картинок в интернете и не заниматься их последующей нарезкой в графических редакторах, удобнее воспользоваться готовыми онлайн-сервисами.

Читать статью целиком »
Просмотров: 2863 | Комментариев: 1

prev 01 ... 04 05 06 07 08 09 10 ... 31 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2019
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.08 сек. / MySQL: 2 (0.0015 сек.) / Память: 4.75 Mb
Наверх