- Генерация PDF документ на PHP с помощью dompdf
- Пишем содержимое HTML для генерации PDF документа
- Генерация PDF документа и скачивание
- Или сохраняем наш PDF на сервере
- Собственно все! Пользуйтесь!
- Можно конечно еще улучшить скрипт
- Конвертируем HTML в PDF при помощи Dompdf
- Приступаем к работе
- Продвинутое использование
- Подведем итоги
Генерация PDF документ на PHP с помощью dompdf
На примере мы будем создавать счет на оплату, довольно таки распространенный вид документа, который нужно генерировать. Для начала скачиваем библиотеку dompdf Мы будем писать все в одном файле, так что после обращения на по адресу файла php, документ уже будет генерироваться. Делаю я это для упрощения понимания.
require_once($_SERVER["DOCUMENT_ROOT"]."/dompdf/dompdf_config.inc.php");
Теперь готовим содержимое нашего будущего документа. Все делаем всем знакомой HTML разметкой, но эта HTML разметка должна быть в переменной.
Пишем содержимое HTML для генерации PDF документа
Обратите внимание, мы закладываем в документ CSS стили и даже разместим туда свою подпись.
//разбиваем изображение для подписи в base64 $path_podpis = $_SERVER["DOCUMENT_ROOT"].'/images/podpis/podpis.png'; $type = pathinfo($path_podpis, PATHINFO_EXTENSION); $data = file_get_contents($path_podpis); $podpis = 'data:image/' . $type . ';base64,' . base64_encode($data); //содержимое HTML в PDF $content =" body < font-family: times; font-size: 11pt; >table @page .podpis_left < position: relative; display: inline-block; width: 392px; font-weight: 700; >.podpis_left img.podpis < position: absolute; right: 7%; bottom: 12px; width: 83px; >.document_number < text-align: center; font-size: 15pt; >table < border-spacing: 0; border-collapse: collapse; >table th < border: 1px solid #ddd; padding: 5px; font-size: 10pt; >table td "; $content .= ' Продавец
Иванов Иван Иванович
ИНН: 593315450321
КПП: 590334434
р/c: 40817810749771710380
к/с: 30101810900000000603
БИК: 042202603
Банк: Волго-вятский БАНК ПАО Сбербанк
Покупатель
'; $content .= ' '.$company["company"].'
ИНН: инн_компании
КПП: кпп_компании
ОГРН: огрн_компании
р/c: рс
к/с: кс
БИК: бик
Банк: банк
'; $content .= 'Счет №31 от '.date("d.m.Y").'
'; $content .= ' № Наименование Ед. изм. Кол-во Цена (руб.) Сумма (руб.) 1 Услуги по договору №02/10/2021 на создание сайта шт. 1 25 000,00 25 000,00 Итого: 25 000,00 Всего к оплате: 25 000,00
Сумма прописью: двадцать пять тысяч рублей 00 копеек
Иванов Иван Иванович ____________________ ';
Генерация PDF документа и скачивание
$html = mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'); $dompdf = new DOMPDF();// Создаем обьект $dompdf->load_html($html, 'UTF-8'); // Загружаем в него наш html код $dompdf->render(); // Создаем из HTML PDF // $dompdf->stream('mypdf.pdf'); // Выводим результат (скачивание) $output = $dompdf->output();
Или сохраняем наш PDF на сервере
//папка куда сохроняем $img_Dir_Str = "invoice/"; $img_Dir = $_SERVER['DOCUMENT_ROOT']."/". $img_Dir_Str; @mkdir($img_Dir, 0777); //сохранение pdf на сервере $file = "Сгенерированный PDF документ на PHP.pdf"; file_put_contents($img_Dir.$file, $output);
Собственно все! Пользуйтесь!
Можно конечно еще улучшить скрипт
- Загнать сумму в переменную и выводить ее прописью (из 25000 в двадцать пять тысяч рублей 00 коп.)
- Сформировать в догонку акт выполненных работ
- А еще до кучи какой-нибудь договор
Если Вам нужно написать готовый инструмент для генерации документов, то пишите, посмотрим что можно сделать под Ваш задачи.
Пишите в комментариях, если нужно дописать функцию перевода числа в прописной вид.
Конвертируем HTML в PDF при помощи Dompdf
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 документ:
Hello Dompdf