Генерация pdf из html. Создаем документ PDF из PHP скрипта с помощью библиотеки FPDF. PDF24 Creator – бесплатный PDF генератор

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

PDFLib в бесплатной версии не поддерживает utf-8, что плохо. С FPDF почти та же история, поэтому эти варианты я отбросил сразу и не стал с ними заморачиваться. Информации по TCPDF в сети достаточно много. Эта библиотека так же входит в состав многих популярных CMS.

Существуют версии для PHP4 и PHP5. Мне нужна пятерка.

Распакуем архив. В каталоге tcpdf увидим следующий список файлов и каталогов:

Cache config doc - документация (можно выкинуть для облегчения) examples - тоже можно выкинуть fonts images 2dbarcodes.php barcodes.php htmlcolors.php tcpdf.php unicode_data.php tcpdf.crt tcpdf.fdf CHANGELOG.TXT LICENSE.TXT README.TXT

TCPDF при генерации документа включает используемые шрифты в документ. Эти шрифты лежат в каталоге fonts. Каждому шрифту соответствуют три файла:

Имя_шрифта.php имя_шрифта.z имя_шрифта.ctg.z

Кириллических шрифтов там нет, что нас, понятно, не устраивает. Если планируете использовать в документе кириллицу, можете удалить все кроме helvetica.php, т. к. он используется библиотекой по умолчанию, и папки utils, где находиться все необходимое для подготовки кириллических шрифтов.

Допустим нам понабился шрифт Arial нормального начертания. Берем шрифт Arial (начертание - normal) из системной папки Windows (например) – файл arial.ttf – и копируем его в папку fonts/utils.

В этой папке есть утилита ttf2ufm, которой мы должны скормить файл arial.ttf:

Php -q makefont.php arial.ttf arial.ufm

Если на вашей локальной машине нет интерпретатора PHP, можете выполнить на сервере файл следующего содержания:

Если вы «скормили» несколько файлов и хотите сформировать сразу все шрифты (для которых созданы файлы *.ufm), имеющиеся в папке, запустите makeallttffonts.php.

После работы данной утилиты у нас в папке utils появятся три файла: arial.php, arial.z, arial.ctg.z, которые мы должны будем переместить в папку fonts. Файлы arial.ttf и arial.ufm нам больше не нужны, поэтому можем смело их удалять.

В итоге мы подготовили шрифт Arial, который будет присоединен к формируемому PDF-файлу. Но при этом нужно учесть, что размер формируемого PDF-документа возрастет примерно на размер файла шрифта arial.z. Также необходимо учесть, что если мы хотим вывести надпись курсивно, нам нужно будет для этого создавать отдельный шрифт ariali, или если полужирным начертанием – arialb.

Пришло время создать наш документ.

Это очень простой пример. В папке examples найдется много более сложных примеров, иллюстрирующих почти все возможности библиотеки.

Приведу так же несколько полезных ссылок:

Документация по TCPDF в составе Joomla http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf_docs

Статья, которая мне очень помогла в свое время и материалами которой я пользовался при написании данной статьи

Для того, чтобы генерировать PDF файл из HTML, мы будем использовать библиотеку DomPDF для PHP. И вместе с ней мы сможем получить качественно сгенерированные PDF файлы с русскими символами.

Итак, приступим. Для начала необходимо скачать саму библиотеку по адресу:

Или установить её через composer:

Composer require dompdf/dompdf

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

Если Вы хотите использовать стандартную сборку, то просто замените файлы из данного архива (916 KB) .

Вам необходимо будет заменить файлы в папке:

../dompdf/lib/fonts

С данным скриптом Вы сможете формировать сложные PDF файлы с таблицами, изображениями, которые из HTML встроятся в PDF файл.

Мы используем эту библиотеку для генерации PDF при ajax запросе. В скачанном архиве Вы найдете файл index.php, который обрабатывает приходящие данные, подключает шаблон, в который уже встроены изображения. Мы выгрузили для Вас полностью рабочий и используемый нами вариант (5 MB) .

Скачать пример сгенерированного PDF файла (580 KB)

Если Вы скачали библиотеку, то подключите к Вашему PHP файлу её с помощью подключения автозагрузчика:

Require_once "dompdf/autoload.inc.php";

Или используйте GIT:

Git clone https://github.com/dompdf/dompdf.git
cd dompdf
git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib
cd lib/php-font-lib
git checkout 0.5.1
cd ..
git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib
cd php-svg-lib
git checkout v0.3

Сам обработчик выглядит так:

//подключаем автозагрузчик include_once "autoload.inc.php"; //функция очистки кода от вредоносных данных function challsrt($data){ $array1=array("\"","*","%","0x","&","\0","\n","\r","\s","\t","\\","`","^","$","{","}","[","]","(",")","wss","blob","localhost","–","