Нажмите CTRL-D чтобы добавить нас в закладки
Внимание! Вы находитесь в незащищенном режиме (HTTP). Для перехода в защищенный режим SSL, нажмите здесь
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
Просмотров: 10129
Проголосовало через SMS: 0
  Разместить у себя на сайте
Прямая ссылка
HTML
BBCode ссылка
BBCode ссылка с текстом

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

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


 Последние новости и статьи  Последние сообщения с форумов
  • Google Pixel взломали за 60 секунд
  • В CMS Joomla обнаружена критическая 0-day уязвимость
  • ФБР не смогло взломать протокол шифрования переписки террористов ...
  • Полиция обыскала дом предполагаемого создателя платежной системы ...
  • Google: квантовый ПК будет в 100 млн раз быстрее стандартных чипо...
  • "Лаборатория Касперского" констатирует усиление атак кибергруппир...
  • Microsoft Edge откроет исходные коды ChakraCore
  • Anonymous объявили 11 декабря «днём троллинга» ИГИЛ
  • Миллионы телевизоров, смартфонов и маршрутизаторов оказались уязв...
  • Adobe прощается с Flash

    Все новости... Все статьи... Прислать новость RSS
  • Сети / Общее » Re: Профессиональные услуги по взлому
  • Взлом и безопасность / Новичкам » Re: Взлом Whatsapp.Viber.Instagram. facebook.Узнаем взломаем...
  • Разное / Ищу работу » Re: Взлом Вконтакте, Одноклассники, почты
  • Разное / Ищу работу » Re: Услуги по взлому сайтов
  • Разное / Ищу работу » Re: Взлом страниц: ВКонтакте, Одноклассники.
  • Разное / Ищу работу » Re: -=Мощный DDoS service/ДДоС сервис=-
  • Разное / Ищу работу » Re: Взлом почты - Mail | Rambler | Яндекс | Gmail |
  • Разное / Ищу работу » Re: взлом почты на майле
  • Разное / Ищу работу » Re: Пробить номер телефона, пробить информацию о человеке.
  • Разное / Ищу работу » Re: Взлом емейлов, вконтакте, одноклассники

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


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

    О проекте | История проекта | Размещение рекламы | Обратная связь | Правила поведения на портале
    Ya-Cyt службы мониторинга серверов

    #{title}

    #{text}

    x

    #{title}

    #{text}