HTML в PDF средствами Dompdf

Давненько я тут не писал.

Сразу к делу: недавно столкнулся с задачей реализовать простенькую печатную форму.

На голом HTML её делать бесполезняк — можно легко столкнуться с «особенностями» браузера из которого производится печать. Собственно решил перегнать html в PDF и уже этот формат использовать в качестве печатного.

В качестве библиотеки выбрал Dompdf — она понимает стили вроде max-width и max-height и умеет работать с картинками.

Порядок действий:

  1. Собственно качаем dompdf: тык
  2. Заливаем содержимое на свой сервак.
  3. Формируем сниппет кода. Принцип прост: html-ку запихиваем в буфер вывода, а уже потом её используем в качестве содержимого PDF-ки:

Читать далее

VK API и access token

Не совсем понятно почему, но VK ввели ограничение на получение данных с публичных методов вроде wall.get и т.п.

В случае, если, к примеру, делаем запрос на получение контента стены какой-нибудь группы вк (corporationofhumor)

получаем

Я лично решил проблему так: зарегал приложение в VK и скопировал сервисный ключ:

Читать далее

Как сделать Update пользователя в обработчике OnAfterUserUpdate без зацикливания.

В обычной ситуации при вызове функции Update класса CUser в обработчике OnAfterUserUpdate приведёт к повторному вызову OnAfterUserUpdate и так по кругу. Таким образом получается замкнутый цикл и скрипт начинает вызывать сам себя бесконечное число раз.

Как же выйти из этой ситуации?

Вариант 1:

А вот как:

В init.php вызываем обработчик:

А вот в самом классе CUserHandler делаем такую хитрость:

Смысл в том, что при первом вызове OnAfterUserUpdateHandler всё, что ниже условия проверки значений $disableHandler и $element_id выполняется, а при последующих вызовах — нет.

Вариант 2:

Обновлять св-во по ссылке (т.к. на вход функции подаётся &$arFields )

Отладка PHP кода в консоли браузера

Сегодня я задумался, как вывести print_r в консоль браузера? Ведь, сколько раз мы писали злосчастные var_dump и print_r и после этого долго мотали страницу в поиске отладочной информации, а если отладку нужно производить на боевом сайте — то клиенты могли увидеть вашу «работу» по устранению неисправностей.

Итак, поехали: реализации функции вывода отладочной информации PHP в консоль браузера

В итоге всё будет выглядеть примерно так:

Читать далее

Полезные функции при выводе информации на русском языке (окончания, номера месяцев, дней)

Очень часто веб-разработчики ленятся и вместо, скажем, надписи «3 дня» пишут «дней: 3». Действительно, зачем заморачиваться и программировать еще и функцию подбора окончания слова? Я решил упростить Вам эту задачу и представляю свои функции, которые использую в проектах.

Функция подбора окончания слова:

Читать далее