Нажмите CTRL-D чтобы добавить нас в закладки
HackZone.RU - PHP и PDF
Войти / Регистрация / Участники
Определение даты выпуска iPhone по серийному номеру
-
Поиск по сайту
Форумы



Реклама

Поиск ТОП Добавить публикацию

PHP и PDF

24.02.2012

Введение.
Всем доброго времени суток. Надеюсь, что эта статья будет для кого-то полезной. Она посвящена созданию PDF файлов, посредством PHP скриптов. Знаю, что реализовать нечто подобное существуют десятки способов, но мой, поверьте, особенный. У него есть по крайней мере 2 преимущества над другими:

а)Не требуется никаких расширений для интерпретатора и библиотек. Все, что нужно, это залить на сервер несколько PHP файлов и подключить их include`ом.
б)Мы будем генерировать PDF страницы, практически с лету. Т.е. не будет никаких сохранений дополнительных файлов на ЖД и.т.д. PDF файл будет формироваться скриптом так же, как и HTML страница.

Итак,  начнем.

Предыстория.
На днях я столкнулся с задачей реализации интернет-магазина для туристического агенства. Суть была такова: клиент заходит на сайт, вводит параметры (дата заезда, кол-во человек итд), нажимает кнопку "Печать" и печатается подробное описание тура. Казалось, что может быть проще? Но подводные камни существуют)) Весь результирующий файл выглядел, как таблица в две колонки. Слева - фотографии. Справа - текст. Из-за этого при выводе на печать, если файл не помещался на странице (а он не помещался)), то он резался на части в буквальном смысле слова. Наблюдалось не только деление фотографий на части, но и деление текста. То есть верхняя половина буквы могла быть на одной странице, а нижняя на другой. Средства для работы с принтером CSS и JS предоставляют просто жалкие. Нужно было что-то более мощное. Так я и пришел к выводу, что нужен PDF.

mPDF.
mPDF - это ряд PHP файлов, содержащих реализацию нужных нам функций. Проще говоря, mPDF - это то, что нам надо залить на сервер и подключить include`ом. Взять архив можно здесь: http://www.mpdf1.com/mpdf/ в разделе "Download". mPDF представляет собой ZIP архив, который надо распаковать и залить на сервер.

Первый PDF.
Ниже приведен код, генерирующий PDF документ с надписью "Hallo, world".

include("../MPDF54/mpdf.php");
$mpdf = new mPDF('blank', 'A4', '8', 'Arial', 15, 5, 7, 7, 10, 10);
$mpdf->charset_in = 'cp1251';
$mpdf->WriteHTML('Hallo, World!', 0);
$mpdf->Output('mpdf.pdf', 'I');

Первая строка - это подключение mPDF к скрипту. Ес-но вместо "../MPDF54/mpdf.php" должен быть путь к файлу mpdf.php.
Вторая строка создает PDF документ, сохраняя его дескриптор в переменной $mpdf. С файлами работали? Вот это примерно тоже, что и fopen(), только параметров побольше. А параметры тут такие:
  1)Режим работы. Понятия не имею, что это такое, но во всех исходниках пишут blank))
  2)Формат бумаги
  3)Размер шрифта "По умолчанию". Задается в пунктах (pt).
  4)Шрифт "По умолчанию".
  5)Отступ слева (ММ).
  5)Отступ справа (ММ).
  5)Отступ сверху (ММ).
  5)Отступ снизу (ММ).
  5)Отступ от заголовка (ММ).
  5)Отступ от подвала (ММ).

Третья строка - кодировка. Указываем родную koi-8 для кириллических символов.
Четвертая строка обеспечивает вывод приветствия с миром в наш PDF. Цифра 0 - это режим парсинга. Я выбрал полный. Есть и другие (http://mpdf1.com/manual/index.php?tid=121&searchstring=WriteHTML).
Пятая строка заканчивает работу.

Теперь сохраните скрипт и запустите. Вместо HTML странички Вы увидите PDF документ с знаменитой фразой. Вместо Hallo, world! можно выводить абсолютно любые HTML теги и CSS атрибуты. Ну или почти все.

Подводные камни.
К сожалению, и они тоже есть. Я нашел лишь часть. Найдете еще - пишите в комментариях.

1)Не обрабатывается атрибут align у картинок.
2)Таблицы переносятся построчно (т.е.по tr).
3)Если что-то не помещается на странице, то оно сжимается, чтоб поместиться)))
4)Отбитые систем мер приводят к неожиданным результатам. 

Заключение.
В заключение рекомендую почитать ресурс: http://mpdf1.com/manual/index.php?tid=121&searchstring=WriteHTML. Надеюсь, я Вам помог. Литературным талантом не отличаюсь, что еще писать в заключении - не знаю, так что просто "Пока" и "До скорых встреч".

При копировании материалов ссылка на HackZone.RU обязательна

Добавить страницу в закладки

 Детали
Категория: Программирование
Опубликовал: Virous
Просмотров: 12293
Проголосовало через SMS: 0
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

 Комментарии (оставить свой комментарий можно здесь)
Только зарегистрированные пользователи могут оставлять комментарии

Зарегистрироваться *** Авторизоваться


 Последние новости и статьи  Последние сообщения с форумов
  • Уязвимость в iOS блокирует шифрование трафика VPN
  • Зафиксирован новый случай использования крайне редкой атаки BadUS...
  • Опубликован способ обхода PPL для внедрения шелл-кода
  • ФБР ликвидировали deer.io
  • Пользователи iOS в Гонконге стали жертвами многофункциональной ма...
  • Украдены исходные коды графических процессоров AMD
  • Фейковое расширение для Chrome используется для кражи криптовалют...
  • В Tor снова исправлена уязвимость, деанонимизировавшая пользовате...
  • В OpenWrt исправлена критическая уязвимость
  • WhatsApp хранит коды для 2FA в открытом виде

    Все новости... Все статьи... Прислать новость RSS
  • Портал / Отзывы и предложения » Re: Make HackZone Great Again
  • Разное / Предложения работы » взлом сайта
  • Взлом и безопасность / Программы » ISBC Telecom обеспечит смс-информирование персонала на удале
  • Взлом и безопасность / Разное » Re: Живу в Туркменистане, SOS
  • Взлом и безопасность / Разное » Re: Живу в Туркменистане, SOS
  • Взлом и безопасность / Разное » Re: Живу в Туркменистане, SOS
  • Взлом и безопасность / Разное » Живу в Туркменистане, SOS
  • Разное / Предложения работы » Взлом CRM сайта
  • Портал / Отзывы и предложения » Re: Make HackZone Great Again
  • Разное / Ищу работу » Re: взлом почты на майле

    Все форумы... RSS


  • Разместить рекламу
    © HackZone Ltd. 1996-2020. Все права зарегистрированы.
    Перепечатка материалов без согласования и указания источника будет преследоваться по Закону

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    contador de visitas счетчик посещений

    #{title}

    #{text}

    x

    #{title}

    #{text}