Для того, чтобы генерировать 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","–","
Скрипт getpdf.php возвращает pdf-документ:
Дистрибутив PDFlib содержит более сложный пример, где создаётся страница с аналоговыми часами. Здесь мы используем возможность PDFlib создания в памяти, чтобы не использовать временные файлы. Этот пример, конвертированный в PHP из примера PDFlib, таков: (Такой же пример имеется в документации CLibPDF .)
Пример 2. pdfclock из дистрибутива PDFlib
|