Test Page

Dompdf – мощнейший PHP-класс для конвертирования HTML-документов в PDF-файлы

Не так давно передо мной встала задача – организовать экспорт HTML-данных в один из популярных графических файлов или же в PDF.

Поскольку получать на выходе картинку в данном случае мне показалось безумием, я решил остановиться на PDF.

Поискав информацию в Интернете и испробовав уйму различных вариантов реализации похожего функционала, я обнаружил, что часть из них работают некорректно, а часть – попросту не работает с кириллицей (русским языком).

Это, конечно, меня не огорчило, и потратив еще немного времени (как говорится, кто ищет – тот всегда найдет), я нашел-таки тот инструмент, который помог мне решить поставленные задачи.

Это класс «Dompdf» для PHP. Что же он из себя представляет?

  1. Есть поддержка русского языка.
  2. Полностью бесплатен.
  3. Легок в использовании.
  4. Открытый исходный код.
  5. Поддержка HTML-разметки и CSS-стилей.
  6. Поддержка изображений.

Возможно, что-то забыл упомянуть, но согласитесь – звучит впечатляюще.

Так вот, именно этот класс помог мне превратить некий документ HTML в идентичный PDF. Именно тому, как им пользоваться, и будет посвящена эта статья.

Итак, прежде всего, для того чтобы воспользоваться этим классом, вы скачиваете архив в конце статьи.

Читайте также:  Java or php web development

Далее загружаете файлы к себе на сервер и осуществляете подключение скрипта в вашем PHP-файле:

 require_once("dompdf/dompdf_config.inc.php");
 $html =      

Привет, Мир!

HTML;

Здесь мы указываем документ непосредственно в теле скрипта, но также вы можете заменить всю строку, например, на:

 $html = file_get_contents("LINK");

Где «LINK» – ссылка на HTML-страницу, которую нужно конвертировать.

Ну и финальные штрихи – это добавить соответствующие теги класса:

 $dompdf = new DOMPDF(); // Создаем обьект $dompdf->load_html($html); // Загружаем в него наш HTML-код $dompdf->render(); // Конвертируем HTML в PDF $dompdf->stream("new_file.pdf"); // Выводим результат на скачивание

И общая картина получается такая:

       

Привет, Мир!

HTML; $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $dompdf->stream("new_file.pdf"); ?>

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

Еще один важный момент: если ссылки на изображения прописаны не относительные, а абсолютные (то есть не «/logo.png», а «https://your_site.com/logo.png»), то в таком случае откройте файл dompdf_config.inc.php в папке /dompdf/ и строку:

 def("DOMPDF_ENABLE_REMOTE", false);
 def("DOMPDF_ENABLE_REMOTE", true);

Вот, собственно, и все. Очень важный момент: если вы получаете ошибку при конвертировании, то всего скорее, вы используете новые свойства стилей (как было у меня), в таком случае – просто постарайтесь оптимизировать (упростить) свой код.

Источник

Convert HTML to PDF in PHP using DomPDF Library

Hi! In today’s post we will see how to convert html to pdf in php using dompdf library. DomPDF is basically a php library that offers a simple way to convert html content to pdf so that you can generate pdf files on fly with php. Frameworks like Laravel offers separate packages to create pdf files, but there is not so much luck when you work on core php. Hence we need external tools for the task and DomPDF is a good fit for it.

The library creates downloadable pdf file from the html webpage. It supports CSS2.1 and CSS3 and renders the html layout including the styles. It also handles @import, @media and @screen queries and can load external stylesheets while generating the pdf.

php convert html to pdf dompdf

1. Convert HTML to PDF — Basic Usage:

Download the dompdf archive from here and extract the contents to your root folder. After that, create a sample php file, ‘index.php’ and include the autoloader file to load the required dompdf libraries and helper functions into your PHP project.

The following php script describes the basic usage of the dompdf class. It converts simple html content into pdf and output to the browser.

Hello World!

A PDF generated by DomPDF library.

'; // load html $dompdf->loadHtml($html); // set paper size and orientation $dompdf->setPaper('A4', 'landscape'); // render html as pdf $dompdf->render(); // output the pdf to browser $dompdf->stream(); ?>

The function setPaper() is optional. If not provided, the default page settings will be used for rendering the pdf.

2. Generate PDF and Show File Preview:

The dompdf library offers an option to preview the pdf file before downloading. After generating the pdf, display it on the browser to get a preview using the stream() method.

This method takes two parameters of which the first is the filename and the second is the optional parameter called Attachment . The default value for this param is ‘1’ forcing the browser to open the download pop-up window. Instead, you must set it as ‘0’ for the browser preview.

Hello World!

A PDF generated by DomPDF library.

'; $dompdf->loadHtml($html); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); // preview pdf $dompdf->stream('newfile',array('Attachment'=>0)); ?>

generate pdf from html php dompdf

3. Save PDF to File:

To save the created pdf as a file on your local disk, you must output the rendered pdf to a variable and write it to a file using the file_put_contents() method.

Hello World!

A PDF generated by DomPDF library.

'; $dompdf->loadHtml($html); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); // write pdf to a file $pdf = $dompdf->output(); file_put_contents("newfile.pdf", $pdf); ?>

4. Generate PDF from HTML File:

You can also generate pdf from an html file. First you have to read the contents of the file into a variable using file_get_contents() method and then load it with the loadHtml() function of the library.

loadHtml($html); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); $dompdf->stream('newfile', array('Attachment'=>0)); ?>

5. DomPDF Options:

The library offers a range of options for customization. You can set the options at run time like this,

set_option('defaultFont', 'Courier'); ?>

For the complete list of available options, see the page Dompdf Options on github.

To generate pdf files in your php project, you can use the DomPDF library. The support for CSS gives you good control over the looks of the generated pdf. But keep in mind rendering large tables and files will take time. I hope this post is useful to you. Please share it on social media if you like it.

Источник

Generate PDF from HTML with Dompdf in PHP

The Pdf file creation in PHP mainly requires when need to generate the file on the basis of the available data otherwise, simply create it manually with the external applications.

For example – generating the report, the user certificate, etc.

For generating pdf file I am using Dompdf library which generates the downloadable pdf file from HTML.

Generate PDF from HTML with Dompdf in PHP

Contents

1. Basic example

Download the library from here.

Store HTML string in $html and assign file name in $filename .

Instantiating Dompdf Class object and pass $html in loadHtml() method. The render() method renders the HTML to pdf.

Completed Code

  UsernameEmail  yssyogesh yogesh@makitweb.com  sonarika sonarika@makitweb.com  vishal vishal@makitweb.com  "; $filename = "newpdffile"; // include autoloader require_once 'dompdf/autoload.inc.php'; // reference the Dompdf namespace use Dompdf\Dompdf; // instantiate and use the dompdf class $dompdf = new Dompdf(); $dompdf->loadHtml($html); // (Optional) Setup the paper size and orientation $dompdf->setPaper('A4', 'landscape'); // Render the HTML as PDF $dompdf->render(); // Output the generated PDF to Browser $dompdf->stream($filename);

2. Preview of the file

For displaying the preview of the file before it is being downloaded. You need to pass the second parameter in the stream() method which contains Attachment option name in the Array.

By default, Attachment option value is 1 which forces the browser to open the download dialog. So, instead of 1 pass 0.

Completed Code

  UsernameEmail  yssyogesh yogesh@makitweb.com  sonarika sonarika@makitweb.com  vishal vishal@makitweb.com  "; $filename = "newpdffile"; // include autoloader require_once 'dompdf/autoload.inc.php'; // reference the Dompdf namespace use Dompdf\Dompdf; // instantiate and use the dompdf class $dompdf = new Dompdf(); $dompdf->loadHtml($html); // (Optional) Setup the paper size and orientation $dompdf->setPaper('A4', 'landscape'); // Render the HTML as PDF $dompdf->render(); // Output the generated PDF to Browser $dompdf->stream($filename,array("Attachment"=>0));

3. Save to server

Saving the generated file on the server for this executing output() method after the render() and store return value in a variable($output) and writing it in a file using file_put_contents() method.

Completed Code

  UsernameEmail  yssyogesh yogesh@makitweb.com  sonarika sonarika@makitweb.com  vishal vishal@makitweb.com  "; // include autoloader require_once 'dompdf/autoload.inc.php'; // reference the Dompdf namespace use Dompdf\Dompdf; // instantiate and use the dompdf class $dompdf = new Dompdf(); $dompdf->loadHtml($html); // (Optional) Setup the paper size and orientation $dompdf->setPaper('A4', 'landscape'); // Render the HTML as PDF $dompdf->render(); $output = $dompdf->output(); file_put_contents("file.pdf", $output);

4. Conclusion

You can easily use this library in your project when you have to generate the pdf file. You need to create your HTML layout and store in a variable or you can directly pass it in loadHtml().

  • Not particularly tolerant to poorly-formed HTML input (using Tidy first may help).
  • Large files or large tables can take a while to render.
  • CSS float is not supported (but is in the works).

You can learn more about this from their documentation with the examples.

If you found this tutorial helpful then don’t forget to share.

Источник

Оцените статью