PDF Create

Генерация PDF. DomPDF PHP

Для того, чтобы генерировать PDF файл из HTML, мы будем использовать библиотеку DomPDF для PHP. И вместе с ней мы сможем получить качественно сгенерированные PDF файлы с русскими символами.

Итак, приступим. Для начала необходимо скачать саму библиотеку по адресу: библиотека DomPDF Git

[Если Вам требуется генерировать PDF файл онлайн, то посетите эту страницу.]

Или установить её через composer:

composer require dompdf/dompdf

Однако, стоит отметить, что стандартная сборка НЕ поддерживает русскоязычные символы. Поэтому, приходится долго копать интернет и пробовать, пробовать, пробовать. Чтобы сократить Ваше время, мы уже собрали все. Ниже, Вы сможете скачать библиотеку с поддержкой русскоязычных символов.

Если Вы хотите использовать стандартную сборку, то просто замените файлы из данного архива .

Вам необходимо будет заменить файлы в папке:

С данным скриптом Вы сможете формировать сложные PDF файлы с таблицами, изображениями, которые из HTML встроятся в PDF файл.

Мы используем эту библиотеку для генерации PDF при ajax запросе. В скачанном архиве Вы найдете файл index.php, который обрабатывает приходящие данные, подключает шаблон, в который уже встроены изображения. Мы выгрузили для Вас полностью рабочий и используемый нами вариант .

Скачать пример сгенерированного PDF файла

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

require_once 'dompdf/autoload.inc.php';
git clone https://github.com/dompdf/dompdf.git
cd dompdf
git clone https://github.com/PhenX/php-font-lib.git lib/php-font-lib
cd lib/php-font-lib
git checkout 0.5.1
cd ..
git clone https://github.com/PhenX/php-svg-lib.git php-svg-lib
cd php-svg-lib
git checkout v0.3

Сам обработчик выглядит так:

//подключаем автозагрузчик include_once 'autoload.inc.php'; //функция очистки кода от вредоносных данных function challsrt($data)< $array1=array( '\'','*','%','0x','&','\0',"\n","\r","\s","\t",'\\','`','^','$','','[',']','(',')','wss','blob','localhost','–',' //подключаем шаблон шапки и низа для будущего PDF файла include '_for_pdf_table_head.php'; //подключаем класс библиотеки use Dompdf\Dompdf; //создаемэкземпляр класса $d=new Dompdf(); //создаем пустую переменную $html=''; //если Вы принимаете данные из ajax /* if(!empty($_POST)) < $html=$table_one_head.challsrt($_POST['pdf']).$table_one_down; >*/ //пример приема данных из AJAX $table=' 
Услуги Цены
Создание сайта-визитки от 2 499 UAH, от 5 999 RUR (сайт-одностраничник)
Создание простого сайта от 3 499 UAH, от 7 999 RUR
(наполнение до 10 страниц без оплаты)
Создание интернет-магазина от 5 499 UAH, от 11 999 RUR
(наполнение до 50 товаров – без оплаты)
Дополнительные услуги по согласованию с заказчиком
Продление доменного имени и хостинга 599 RUR+цена хостинга+цена домена
Написание уникальных статей
(не входящих в пакет услуг создания сайта)
от 29 UAH, 69 RUR / 1000 символов без пробелов
Поддержка сайта первые 14 дней без оплаты
Поддержка сайта после 14 дней 749 UAH, 1599 RUR / 30 дней
(если производились действия)
Минимальная стоимость хостинга 329 UAH, 719 RUR / 365 дней
[расположение: RU, DE, UA]
Минимальная стоимость доменного имени 169 UAH, 399 RUR / 365 дней
Подбор доменного имени даром
'; //склеиваем все данные $html=$table_one_head.$table.$table_one_down; // если в таблице есть нечитаемые для PDF скрипта символы, то заменяем их на читаемые $html=str_replace('₽','рос. руб.', $html); //убираем пробелы HTML $html=str_replace(' ',' ', $html); //генерируем имя файла с уникальным ключем $name=date("Y-m-d-H-i-s").uniqid().'.pdf'; //обрабатываем данные с помощью библиотеки DOMPDF $d->loadHtml($html); //устанавливаем ориентацию листа portrait || landscape $d->setPaper('A4','portrait'); //отображаем готовый PDF $d->render(); //записываем PDF в файл file_put_contents(getenv('DOCUMENT_ROOT')."/pdf/", $d->output()); //можно отправить ответ после AJAX Запроса с ссылкой на файл. у на //echo '
Скачать файл
';

Используемые библиотеки:

  • PDF Rendering
    • CPDF (included with dompdf)
    • PDFLib
    • php-font-lib 0.5.x
    • html5lib (included with dompdf)
    • php-svg-lib 0.3.x for SVG support

    Системные и иные требования:

    • PHP version 5.4.0 or higher
    • DOM extension
    • GD extension
    • MBString extension
    • php-font-lib
    • php-svg-lib
    • CSS 2.1 и некоторые CSS3 свойства, такие как: @import, @media & @page правила
    • HTML 4.0
    • Внешних стилей http/ftp (с fopen-запросами)
    • tables, вместе с параметрами строк и ячеек, отступов и других стилей для тиблиц
    • изображений (gif, png (8, 24 and 32 bit with alpha channel), bmp & jpeg)
    • простых SVG

    Конвертировать IMG to base64 можно здесь.

    Источник

    Generate PDF from HTML template in PHP using Dompdf

    Here in this post, we are going to see how to generate the PDF from an HTML template.

    In brief, Dompdf is the HTML to PDF converter that is written in PHP and can be used by developers to generate PDF. This is mostly a CSS 2.1 compliant HTML layout and rendering engine. A few CSS3 properties also can be handled by Dompdf.

    Now let’s see the how to generate PDF from an HTML template using the Dompdf PDF converter.

    To do this first you have to download Dompdf. After you download it place it in a directory.

    Here we are going to create a simple HTML file in the same directory where we have placed the Dompdf. For example, our HTML file has a table that contains some dummy data inside it. Below is the code of that HTML file that we are going to convert into PDF:

        th, td   
    Name Email Phone Number
    Faruque Ahamed Mollick [email protected] 1234567890
    Ansaruddin SK [email protected] 9876543210
    Mintu SK [email protected] 5555555555
    Dewan Ukil [email protected] 8888555596
    Aryan Khan [email protected] 7777777777
    Arijit Singh [email protected] 9999999999

    Name the HTML file as test.html.

    Now I am going to tell you how to use the Dompdf to generate PDF from the test.html file.

    At first, you need to include the required PHP libraries from Dompdf directory that you have just download:

    require_once 'dompdf/lib/html5lib/Parser.php'; require_once 'dompdf/lib/php-font-lib/src/FontLib/Autoloader.php'; require_once 'dompdf/lib/php-svg-lib/src/autoload.php'; require_once 'dompdf/src/Autoloader.php';

    After that you just need few lines of codes:

    Dompdf\Autoloader::register(); use Dompdf\Dompdf; $dompdf = new Dompdf(); $dompdf->loadHtml( file_get_contents('test.html') ); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); //$dompdf->stream(); // View PDF on browser instead of download $dompdf->stream("dompdf_outFRK.pdf", array("Attachment" => false));

    The complete PHP code is given below:

    loadHtml( file_get_contents('test.html') ); $dompdf->setPaper('A4', 'landscape'); $dompdf->render(); //$dompdf->stream(); // View PDF on browser instead of download $dompdf->stream("dompdf_outFRK.pdf", array("Attachment" => false)); ?>

    Name the PHP files as any name you like and run it on your browser. After you run the above code you will see the PDF on your browser. If you want it to be downloaded instead of showing on the browser just replace the below code:

    $dompdf->stream("dompdf_outFRK.pdf", array("Attachment" => false));

    And you will see the PDF downloading instantly instead of showing it on the browser.

    You will see that the same HTML template is now in PDF format. All of these done by Dompdf. I hope you will also like to use Dompdf to generate PDF from HTML template.

    Источник

    Генерация 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); 

    Собственно все! Пользуйтесь!

    Можно конечно еще улучшить скрипт

    1. Загнать сумму в переменную и выводить ее прописью (из 25000 в двадцать пять тысяч рублей 00 коп.)
    2. Сформировать в догонку акт выполненных работ
    3. А еще до кучи какой-нибудь договор

    Если Вам нужно написать готовый инструмент для генерации документов, то пишите, посмотрим что можно сделать под Ваш задачи.

    Пишите в комментариях, если нужно дописать функцию перевода числа в прописной вид.

    Источник

    Читайте также:  Photos
Оцените статью