php convert html to pdf
Convert HTML To PDF In PHP
In this tutorial-based article, we will learn how to convert HTML with CSS styling into a PDF file. Whilst PHP currently doesn’t have this capability in its native functional arsenal. We will utilise a third-party library to achieve the conversion.
The conversion library of choice (html2pdf) is free to use, allows modification, and even redistribution. So if you’re in a commercial environment, it’s a bonus. The package not only converts HTML syntax to PDF files but brings along the CSS styling too.
Convert HTML to PDF
Please note that html2pdf works with PHP versions from 5.6 to 7.4 which gives it a great scope for old projects too.
Let’s go ahead and install the package and convert some HTML.
html2pdf HTML to PDF converter can be installed manually by downloading the files from its GitHub repository or alternatively with Composer. I will use the latter for this tutorial.
Step 1 – Install HTML2PDF
Use Composer to install the package with the following command. If you haven’t got composer already then check out my tutorial for using composer here.
Step 2 – Require the package in your code
Step 3 – Convert inline HTML to PDF
Add the following code to your function or similar. Notice there are two output lines, one of which is commented out, you can add the ‘D’ parameter to force the download immediately, but for this example, I’ve instructed the PDF to load in the browser first.
Step 4 – Load the page with the conversion script
Now, you will notice that html2pdf’s output function will essentially instruct the PHP engine/browser to load a PDF page. Which is viewable in a browser like Chrome and is downloadable.
Check out the screenshot below –
Summary
HTML2PDF is by no means the only package that can convert HTML to PDF files. This package though is extremely simple to use and it has a good documentation base too. You can check out the docs here.
Be sure to check out the parameter options for the output() function which gives you a flexible variation of functionality including downloading the file to your local computer.
Dompdf – мощнейший PHP-класс для конвертирования HTML-документов в PDF-файлы
Не так давно передо мной встала задача – организовать экспорт HTML-данных в один из популярных графических файлов или же в PDF.
Поскольку получать на выходе картинку в данном случае мне показалось безумием, я решил остановиться на PDF.
Поискав информацию в Интернете и испробовав уйму различных вариантов реализации похожего функционала, я обнаружил, что часть из них работают некорректно, а часть – попросту не работает с кириллицей (русским языком).
Это, конечно, меня не огорчило, и потратив еще немного времени (как говорится, кто ищет – тот всегда найдет), я нашел-таки тот инструмент, который помог мне решить поставленные задачи.
Это класс «Dompdf» для PHP. Что же он из себя представляет?
Возможно, что-то забыл упомянуть, но согласитесь – звучит впечатляюще.
Так вот, именно этот класс помог мне превратить некий документ HTML в идентичный PDF. Именно тому, как им пользоваться, и будет посвящена эта статья.
Итак, прежде всего, для того чтобы воспользоваться этим классом, вы скачиваете архив в конце статьи.
Далее загружаете файлы к себе на сервер и осуществляете подключение скрипта в вашем PHP-файле:
Здесь мы указываем документ непосредственно в теле скрипта, но также вы можете заменить всю строку, например, на:
Где «LINK» – ссылка на HTML-страницу, которую нужно конвертировать.
Ну и финальные штрихи – это добавить соответствующие теги класса:
И общая картина получается такая:
Если вы не хотите, чтобы при посещении скрипта происходило скачивание полученного PDF-файла, а хотите поместить данные в переменную для дальнейшего использования, то строку:
Еще один важный момент: если ссылки на изображения прописаны не относительные, а абсолютные (то есть не «/logo.png», а «https://your_site.com/logo.png»), то в таком случае откройте файл dompdf_config.inc.php в папке /dompdf/ и строку:
Вот, собственно, и все. Очень важный момент: если вы получаете ошибку при конвертировании, то всего скорее, вы используете новые свойства стилей (как было у меня), в таком случае – просто постарайтесь оптимизировать (упростить) свой код.
Генерация документов в doc, excel, pdf и других форматах на сервере
Выгрузка отчетов в различных форматах — типовая задача для многих проектов. И сейчас есть немало инструментов для этого. Среди них есть интересный вариант, который применяется, как мне кажется, не часто, но он однозначно стоит внимания. Потому что позволяет получить документ в нужном формате буквально одной командой. О нем и расскажу.
Я буду не многословен и сразу скажу, что речь идет о конвертере, встроенном в пакет LibreOffice. Вы можете запустить конвертацию из консоли, чтобы увидеть как это работает:
Эта команда конвертирует файл html.html в pdf файл. Количество поддерживаемых форматов впечатляет.
Выгода от использования такого инструмента очевидна. Вместо того, чтобы писать код для генерации документов в каждом из нужных форматов, просто создаем обычное html-представление. Далее сгенерированную страницу прогоняем через конвертер.
Запуск конвертации из PHP
Для установки конвертера на сервере придется установить пакет libreoffice-core:
Чтобы было удобно работать с утилитой из PHP, я написал обертку.
Обертка позволяет вам не думать о работе с временными файлами, подставляет в команду некоторые параметры по умолчанию, содержит константы с описанием доступных форматов, а также дает возможность задать таймаут на выполнение конвертации.
Для работы с оберткой подключаем ее к своему проекту через composer:
Использовать ее можно так:
В результате будет сформирован docx файл. Больше примеров можно найти на гитхабе.
Разумеется, в качестве бонуса можно запускать конвертацию в другую сторону — из doc в html и отображать содержимое офисных документов в браузере. Качество конвертации будет не всегда на высоте, но для каких-то случаев вполне подойдет.
Несколько граблей
Будет полезно рассказать про несколько особенностей, с которыми я столкнулся при работе с этой утилитой.
1. Применение CSS стилей. При преобразовании html в нужный формат имейте ввиду, что такая запись воспринимается корректно:
А такие записи будут обработаны точно так же, как если бы class мы совсем не указали:
2. При преобразовании html в нужный формат не всегда срабатывают описания стилей и иногда приходится экспериментировать, чтобы заработало. Например, так не работает:
3. Одно и то же преобразование можно выполнять с помощью разных конвертеров. При этом результат будет существенно отличаться. Если у вас на выходе получится не очень красивый документ, попробуйте принудительно задать используемый модуль, например:
4. Можно ли настроить ширину строк в таблице — для меня пока загадка. И в целом со стилизацией таблицы при преобразовании html в docx или pdf у меня возникли затруднения. Поэтому на мой взгляд подход трудно будет применять для генерации сложных печатных форм, таких как счет-фактура.
How to convert a PHP web page to PDF? [closed]
Want to improve this question? Update the question so it’s on-topic for Stack Overflow.
I have a PHP file that generates a report from the database, and I want this page to be converted into a PDF file, so it can be saved and printed. How do I convert a web page to a PDF? Is there any tool available or a PHP script?
6 Answers 6
Make use of TCPDF Plugin.
Here’s an example and try this after configuring the above on your code.
I used pretty often:
Made so far a good job, there are a few bugs but else it does very well.
With TCPDF I had the most problems, since it seems that it doesn’t support the convertation from HTML to PDF that well.
You can use MPDF, a PHP library which generates PDF files from UTF-8 encoded HTML. It’s under GNU GPL v2 licence.
If you want generate PDF client-side (with a button on the html report), you could use jsPDF (http://parall.ax/products/jspdf)
You can use wkhtmltopdf or tcpdf scripts to convert html pages to pdf
DomPDF looks like what you’re looking for.
dompdf is an HTML to PDF converter. At its heart, dompdf is (mostly) CSS 2.1 compliant HTML layout and rendering engine written in PHP. It is a style-driven renderer: it will download and read external stylesheets, inline style tags, and the style attributes of individual HTML elements. It also supports most presentational HTML attributes.
Converting HTML to PDF using PHP? [duplicate]
Is it possible to convert a HTML page to PDF using PHP, and if so, how can it be done?
Specifically, the page is an invoice generated dynamically. So I would like it loaded using:
And the HTML output would have to be converted to PDF.
Any good libraries that do this will be fine.
1 Answer 1
If you wish to create a pdf from php, pdflib will help you (as some others suggested).
Else, if you want to convert an HTML page to PDF via PHP, you’ll find a little trouble outta here.. For 3 years I’ve been trying to do it as best as I can.
So, the options I know are:
DOMPDF : php class that wraps the html and builds the pdf. Works good, customizable (if you know php), based on pdflib, if I remember right it takes even some CSS. Bad news: slow when the html is big or complex.
Those two are php classes, but if you can install some software on the server, and access it throught passthru() or system(), give a look to these too:
wkhtmltopdf: based on webkit (safari’s wrapper), is really fast and powerful.. seems like this is the best one (atm) for converting html pages to pdf on the fly; taking only 2 seconds for a 3 page xHTML document with CSS2. It is a recent project, anyway, the google.code page is often updated.
htmldoc : This one is a tank, it never really stops/crashes.. the project looks dead since 2007, but anyway if you don’t need CSS compatibility this can be nice for you.