Используя библиотеку DOMPDF, вы можете создавать PDF-файлы из HTML-кода.
Вам просто нужно создать определенный шаблон HTML, передать его в DOMPDF и получить на выходе сгенерированный PDF-файл.
Но нельзя забывать, что эта библиотека не является движком обработки веб-страниц, а значит, шаблоны необходимо создавать с использованием самых простых инструментов: HTML-тегов и стилей CSS. Хотя разработчики утверждают, что их библиотека поддерживает стандарты CSS 2.1 и даже некоторые свойства CSS 3. Полный их список можно найти Здесь .
Кстати, есть один недостаток — он довольно «жаден» к оперативной памяти.
Поэтому, возможно, вам придется задуматься об аренде виртуального выделенного сервера.
Но это зависит от содержания и объема планируемых PDF-документов.
С другой стороны, это поможет вам сэкономить массу времени на разработке различных отчетов в формате PDF. Читаю различную документацию по DOMPDF, а ее не так много, а то в основном больше информации в виде ответов на задаваемые вопросы.
Я заметил, что он используется для более тривиальных задач.
Ну, например, ответ на вопрос: как задать номер стартовой страницы документа? Я не получил его.
Теперь я хочу рассказать вам о «подводных камнях», с которыми мне пришлось столкнуться.
И поверьте мне, я потерял много времени.
Я бы потерял еще больше, если бы добрый человек не дал мне несколько советов.
Уже имел опыт работы с этой библиотекой.
Вот список проблем, с которыми я столкнулся:
- отсутствие необходимых каталогов с файлами (не полная сборка);
- частично рабочая версия библиотеки;
- наличие ошибки при попытке установить номер страницы документа (номер стартовой страницы);
- наличие пустой страницы в конце документа;
- не полное заполнение страницы текстом (иногда оставалось много пустого места).
Установка библиотеки
Вот берем саму библиотеку Здесь .К сожалению, я не могу сказать (как обычно говорят в таких случаях), что вам нужно скачать самую новую версию.
Дальше я объясню почему.
Но я все же надеюсь, что со временем существующие в последней версии ошибки будут устранены.
Получив архив с библиотекой, распакуйте его в нужную вам директорию на сервере.
В корневом каталоге библиотеки DOMPDF находится файл конфигурации — dompdf_config.inc.php .
Он содержит основные настройки библиотеки.
Здесь нас интересуют следующие три:
- смысл директивы DOMPDF_DEFAULT_PAPER_SIZE содержит значение формата бумаги (а4, Letter и т. д.);
- в директиве ДОМПДФ_ДПИ качество детализации в документе указывается в числовом выражении.
По умолчанию это 96;
- директивное значение DOMPDF_TEMP_DIR следует изменить на содержащееся значение в директиве PHP upload_tmp_dir , но только если значение, возвращаемое функцией PHP sys_get_temp_dir , будет отличаться от значения этой директивы PHP. Полный список возможных настроек можно найти Здесь .
- PHP версии 5.0;
- Расширение DOMDocument;
- ПКРЕ;
- Злиб;
- расширение MBString;
- Г.
Д.
Исключение составила Denwera 3. Для PHP 5.3, входящего в пакет Denwera 3, не было необходимости устанавливать ни одну из этих двух программ.
Установка шрифтов
Изначально библиотека содержит набор базовых шрифтов, но ни один из них не поддерживает кириллицу.Поэтому, если вам нужны кириллические шрифты или есть необходимость расширить существующий набор готовых шрифтов, вам придется их установить.
И в этом нет ничего сложного.
Вы можете установить шрифты TrueType (*.
ttf) и OpenType (*.
otf).
Для работы нам понадобится PHP скрипт load_font.php , который находится в корне каталога библиотеки DOMPDF. Этот скрипт необходимо запустить из командной строки и он принимает на вход следующие параметры:
- семейство шрифтов – название шрифта;
- n_файл – файл *.
ttf или *.
otf;
- {b|i|bi}_file – файлы, соответствующие стилям шрифта (жирный, курсив, полужирный курсив).
.Для демонстрации мы установим шрифт «робото»./load_font.php slkscr /usr/share/fonts/truetype/slkscr.ttf .
/load_font.php Arial /mnt/c_drive/WINDOWS/Fonts/arial.ttf
Предположим, что каталог со шрифтом «roboto» и его стилями находится в каталоге «D:\font».
Соответственно, если нам нужен только шрифт с «обычным» начертанием, то нам нужно запустить скрипт со следующими параметрами:
.Но если вам нужно установить шрифт «робото» со всеми четырьмя его стилями (обычный, полужирный, курсив и полужирный курсив), то вызов скрипта будет иметь другой вид:/load_font.php Roboto D:\font\Roboto-Regular.ttf.
.Обратите внимание на порядок передачи параметров в скрипт для одновременного создания шрифта «робото» с четырьмя его стилями./load_font.php Roboto D:\font\Roboto-Regular.ttf D:\font\Roboto-Bold.ttf D:\font\Roboto-Italic.ttf D:\font\Roboto-BoldItalic.ttf.
Сначала передается путь к файлу шрифта с «обычным» начертанием, затем «жирным» и т. д. Этот порядок нельзя нарушать ни при каких обстоятельствах.
Создание шаблона для DOMPDF
Шаблон представляет собой обычную HTML-страницу с добавлением некоторых новых свойств CSS, необходимых для работы самой библиотеки.Я не буду приводить здесь весь исходный код шаблона, так как в этом нет необходимости.
Более того, к статье прикреплены все необходимые файлы.
Кстати, в шаблоны можно вставлять код на PHP и JavaScript. В нашем случае шаблон будет содержать шесть меток: метка для номера страницы, который нужно установить.
{Начальная страница} , этикетка с цветовым кодом {цвет} для нижнего колонтитула страницы, метка {Страница 1} для текста на первой странице метка {страница 2} за текст на второй странице и две отметки {метка-1} И {метка-2} для отображения информационного текста в нижнем колонтитуле.
Также будет встроенный PHP-скрипт для примитивного рисования и отображения нумерации страниц.
Данные, которые могут занимать более одной страницы, должны быть заключены в блок.
Можно, конечно, этого не делать, но тогда вы не сможете вставлять разрывы страниц, и текст может не равномерно заполнять страницу.
Чтобы вставить разрыв страницы, в стилях этого блока необходимо указать одно из следующих свойств:
- разрыв страницы после : Always – вставляет разрыв после страницы;
- разрыв страницы перед : Always – вставляет разрыв перед страницей;
- разрыв страницы внутри :auto — это значит, что DOMPDF сам «примет» решение;
- разрыв страницы внутри : избежать – предотвращает нарушение целостности элемента.
Для этого вам нужно написать небольшой PHP-скрипт и вставить его в шаблон.
if ( isset($pdf) ) {
Теги: #php #pdf #dompdf #библиотека #экспорт #установка #конфигурация #разработка сайта #php #pdf
-
Человеческий Фактор
19 Oct, 24 -
Внедрение Автоматизированного Тестирования
19 Oct, 24 -
Визуализация Потока Выполнения В Node.js
19 Oct, 24 -
Как Представить Бесчисленное Множество?
19 Oct, 24 -
Большие Данные — Это Скучно?
19 Oct, 24