Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Конвертируем HTML в PDF при помощи Dompdf

Anna | 31.05.2014 | нет комментариев

PDF — формат, ставший теснее эталоном. Он был первоначально сделан Adobe для представления текста и изображений в документе с фиксированной конструкцией. Давным-давно не редкость для веб-приложений, поддерживающих прыжку данных, таких как счета либо отчеты, отдавать их в PDF формате. Так что в этой статье мы пройдем примитивную генерацию PDF документов применяя PHP.

Dompdf — это чудесная библиотека, способная генерировать PDF из HTML-разметки и CSS-жанров (в большинстве случаев это жанры, совместимые с CSS 2.1 с помощью некоторых свойств CSS3). Мы можем определить, как наше содержимое должно выглядеть, применяя эти знакомые спецтехнологии, и позже легко конвертировать его в фиксированный документ. Также эта библиотека имеет и другие пригодные и увлекательные функции.

Приступаем к работе

Dompdf доступен на GitHub и может быть установлен применяя Composer. Установка через Composer без каких-либо ошибок Зачастую вызывает сложности, следственно я рекомендую легко применять Git для установки Dompdf.

Библиотека требует PHP >= 5.0 с активированными растяжениями mbstring и DOM. Также она требует несколько шрифтов, которые обыкновенно доступны на большинстве компьютеров.

Перейдите в директорию, куда собираетесь установить библиотеку и исполните в командной строке:

git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update

Как только мы скачали Dompdf, давайте напишем короткий пример, тот, что сгенерирует примитивный PDF документ:

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");

require_once "dompdf_config.inc.php";

$dompdf = new DOMPDF();

$html = <<<'ENDHTML'
<html>
 <body>
  <h1>Hello Dompdf</h1>
 </body>
</html>
ENDHTML;

$dompdf->load_html($html);
$dompdf->render();

$dompdf->stream("hello.pdf");

Для того, Дабы применять библиотеку в плане, мы вначале подтягиваем файл dompdf_config.inc.php, тот, что содержит огромную часть конфигурации Dompdf. Он также загружает autoloader и пользовательский файл конфигурации в котором мы можем переопределить параметры по умолчанию.

HTML-разметка передается как строка в способ load_html(). Альтернативно мы можем загрузить разметку из файла либо URL, применяя способ load_html_file(). Он принимает имя файла либо URL веб-страницы в качестве довода.

Способ render() отображает HTML в PDF, и мы готовы к отдаче файла. Способ stream() отправляет результирующий PDF как вложение в браузер. Данный способ имеет добровольный 2-й параметр, массив опций:

  • Accept-Ranges – boolean, отсылает заголовок “Accept-Ranges” (по умолчанию false).
  • Attachment – boolean, отсылает заголовок “Content-Disposition: attachment” принуждая браузер отображать запрос на сохранение (по умолчанию true).
  • compress – boolean, включает сжатие содержимого (по умолчанию true).

Только что мы сгенерировали дюже легкой PDF, но это не вовсе практично. В действительности мы Зачастую имеем требования к размеру листа, ориентации страницы, кодировке символов и т.д. Есть целый комплект опций, которые мы можем установить, Дабы сделать Dompdf больше подходящим для наших реальных надобностей. Все они перечислены и объяснены в файле dompdf_config.inc.php, тот, что устанавливает им значения по умолчанию. Вы можете менять эти значения, обновляя файл пользовательской конфигурацииdompdf_config.custom.inc.php. Вот некоторые из значимых настроек:

  • DOMPDF_DEFAULT_PAPER_SIZE – устанавливает размер листа по умолчанию для PDF-документа. Поддерживаемые размеры листов вы можете обнаружить в файле include/cpdf_adapter.cls.php (значение по умолчанию — “letter”).
  • DOMPDF_TEMP_DIR – указывает временную па_NUM} и {PAGE_COUNT} на всякой странице, и делает $pdfдоступным для нас.Также мы можем не применять встроенный PHP и добиваться аналогичного результата прямо из PHP, приблизительно так:
    <?php
    $dompdf = new DOMPDF();
    $dompdf->set_paper("A4");
    
    // load the html content
    $dompdf->load_html($html);
    $dompdf->render();
    $canvas = $dompdf->get_canvas();
    $font = Font_Metrics::get_font("helvetica", "bold");
    $canvas->page_text(16, 800, "Page: {PAGE_NUM} of {PAGE_COUNT}", $font, 8, array(0,0,0));
    $dompdf->stream("sample.pdf",array("Attachment"=>0));
    

    Обратите внимание, мы размещаем код позже вызова $dompdf->render() потому что мы, по существу, редактируем теснее сделанный PDF.

    Подведем выводы

    В этой статье мы обсудили примитивный метод конвертировать HTML в PDF применяя Dompdf. Невзирая на то, что Dompdf хорошая библиотека, она не является всецело универсальным решением для генерации PDF документов; она все же имеет определенные ограничения и задачи. Dompdf не дюже терпимо относится к нехорошо оформленному HTML и крупные таблицы могут легко привести к переполнению памяти. Некоторые базовые функции CSS, такие как float не всецело поддерживаются. И вообще, помощь CSS3 дюже ограничена. Если вам нужны функции, которые не поддерживаются в Dompdf, вам может подмогнуть к примеру wkhtmltopdf. Тем не менее, Dompdf является дюже простым и комфортным инструментом для решения большинства задач по экспорту PDF.

    На самом деле достаточно сложно объяснить все функции библиотеки в статье как бы этой, следственно не позабудьте просмотреть документацию и начальный код, а также изучите такие пригодные функции, как добавление колбэков, применение своих шрифтов и др.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB