Как перевести файл php в pdf

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/ и строку:

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

Источник

Конвертировать PHP в PDF с помощью Фотоконвертера

Способы преобразования формата PHP в PDF

Есть несколько способов конвертации PHP файлов в формат PDF. Самый простой способ – это онлайн конвертация. В процессе, ваши файлы загружаются на сервер, и там обрабатываются. Такой вариант будет удобен, если вам нужно конвертировать всего несколько файлов.

Другой способ – установить Фотоконвертер. Установленная программа работает быстрее и эффективнее онлайн конвертации, так как все файлы обрабатываются на локальном диске. Фотоконвертер – это хороший вариант конвертировать множество файлов PHP в формат PDF за раз, сохраняя конфиденциальность информации.

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

Скачайте и установите Фотоконвертер

Фотоконвертер легко скачать, установить и использовать – не нужно быть специалистом, чтобы разобраться как он работает.Установить Фотоконвертер

Добавьте PHP файлы

Вы можете выбрать PHP файлы через меню Файлы → Добавить файлы либо просто перекинуть их в окно Фотоконвертера.

Как перевести файл php в pdf. Смотреть фото Как перевести файл php в pdf. Смотреть картинку Как перевести файл php в pdf. Картинка про Как перевести файл php в pdf. Фото Как перевести файл php в pdf

Выберите место, куда сохранить полученные PDF файлы

Во вкладке Сохранить выберите папку для записи готовых PDF файлов.

Как перевести файл php в pdf. Смотреть фото Как перевести файл php в pdf. Смотреть картинку Как перевести файл php в pdf. Картинка про Как перевести файл php в pdf. Фото Как перевести файл php в pdf

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

Выберите PDF в качестве формата для сохранения

Как перевести файл php в pdf. Смотреть фото Как перевести файл php в pdf. Смотреть картинку Как перевести файл php в pdf. Картинка про Как перевести файл php в pdf. Фото Как перевести файл php в pdf

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

Видео инструкция

Интерфейс командной строки

Опытные пользователи могут использовать конвертер PHP в PDF через командную строку в ручном или автоматическом режиме.

За дополнительной помощью по использованию по использованию командной строки обращайтесь в службу поддержки пользователей.

Источник

Generating PDF files with PHP and FPDF

Большинство web-сервисов экспортируют данные в разных форматах для дальнейшего использования. Данная статья о том, как экспортировать данные в pdf-формате.
Хотя многие знают как это делать, я опишу кратко для тех кто не знает.

PHP позволяет нам генерировать файлы в формате pdf налету. FPDF — это бесплатный код на языке php, позволяющий создавать документы в формате pdf и производить с ними различные манипуляции.

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

Почему FPDF?
Альтернатива — это использование FPDF, бесплатный класс содержащий большое количество функций для создания и манипулирования PDF-документами. Ключевое слово для данного момента — это ее бесплатность. Вы можете скачать, использовать и модифицировать данный класс как вам заблагорассудится. В дополнение к бесплатности, эта библиотека намного проще, чем PDFlib. Для использования PDFlib необходимо установить ее как расширение к PHP, в то время как FPDF может быть подключена в программу напрямую.

Создание документов PDF
Для того чтобы начать, необходимо скачать код FPDF с сайта FPDF Web site и включить в программу. Например, вот так

$pdf->SetAuthor(‘Lana Kovacevic’);
$pdf->SetTitle(‘FPDF tutorial’);

В функцию AddPage () можно передать параметры «P» или «L» для указания ориентации страницы. Функция SetDisplayMode определяет как будет отображена страница. Вы можете определить параметры увеличения и разметки. В примере мы используем 100% увеличение и разметку по умолчанию, определенную в программе, используемой для просмотра.

Сейчас, когда у нас есть страница, давайте вставим в нее изображение для того чтобы сделать страницу приятней, также мы добавим ссылку. Мы отобразим логотип FPDF используя функцию Image и передадим в нее следующие параметры — название файла, размерность и адрес.

$pdf->SetXY(10,50);
$pdf->SetFontSize(10);
$pdf->Write(5,’Congratulations! You have generated a PDF. ‘);

Здесь мы указали имя файла и параметры вывода, в данном случае «I». «I»-параметр выведет результат в браузер.

require(‘fpdf.php’);
//create a FPDF object
$pdf=new FPDF();
//set document properties
$pdf->SetAuthor(‘Lana Kovacevic’);
$pdf->SetTitle(‘FPDF tutorial’);
//set font for the entire document
$pdf->SetFont(‘Helvetica’,’B’,20);
$pdf->SetTextColor(50,60,100);
//set up a page
$pdf->AddPage(‘P’);
$pdf->SetDisplayMode(real,’default’);
//insert an image and make it a link
$pdf->Image(‘logo.png’,10,20,33,0,’ ‘,’http://www.fpdf.org/’);
//display the title with a border around it
$pdf->SetXY(50,20);
$pdf->SetDrawColor(50,60,100);
$pdf->Cell(100,10,’FPDF Tutorial’,1,0,’C’,0);
//Set x and y position for the main text, reduce font size and write content
$pdf->SetXY (10,50);
$pdf->SetFontSize(10);
$pdf->Write(5,’Congratulations! You have generated a PDF.’);
//Output the document
$pdf->Output(‘example1.pdf’,’I’);

Сейчас когда мы научились создавать документы, посмотрим что еще можно сделать, используя FPDF. Пример ниже показывает нам как создать верх и низ (хедер и футер 🙂 ) нашего документа.

require(‘fpdf.php’);
class PDF extends FPDF
<
function Header()
<
$this->Image(‘logo.png’,10,8,33);
$this->SetFont(‘Helvetica’,’B’,15);
$this->SetXY(50, 10);
$this->Cell(0,10,’This is a header’,1,0,’C’);
>
function Footer()
<
$this->SetXY(100,-15);
$this->SetFont(‘Helvetica’,’I’,10);
$this->Write (5, ‘This is a footer’);
>
>
$pdf=new PDF();
$pdf->AddPage();
$pdf->Output(‘example2.pdf’,’D’);

Как вы видите мы создали дочерний класс, используя наследование и создания функций Header и Footer. Затем мы создали новый объект и добавили страницу в документ. Функция AddPage автоматически вызовет функции Header и Footer. В конце мы вывели полученную информацию в файл с названием example2.pdf, используя значение «D». В этом случае браузер предложит сохранить данный файл.

Итак, мы изучили основы создания PDF-документов, для более подробной информации используйте FPDF Web site.

Источник

DOMPDF – экспорт данных из PHP в PDF

С помощью библиотеки DOMPDF можно создавать PDF файлы из HTML кода. Нужно только сверстать некий HTML шаблон и передать его DOMPDF и уже на выходе получить сгенерированный PDF файл. Но не надо забывать и то, что эта библиотека не движок для обработки веб-страниц, а значит и шаблоны должны быть сверстаны с использованием самых базовых средств: HTML тегов и CSS стилей. Хотя разработчики заявляют, что их библиотека поддерживает стандарты CSS 2.1 и даже некоторые свойства CSS 3. С полным их перечнем можно ознакомиться здесь. Есть, кстати, один минус – она является довольно “прожорливой” к оперативной памяти. Поэтому возможно придется задуматься об аренде виртуального выделенного сервера. Но это зависит от содержания и объема планируемых PDF документов. С другой стороны она вам может помочь сэкономить много времени на разработку различных отчетов в формате PDF.
Читая различную документацию по DOMPDF, а ее немного и то в основном больше информации в виде ответов на заданные вопросы. Я заметил, что ее используют для более тривиальных задач. Ну, к примеру, ответа на вопрос: как задать номер стартовой страницы для документа? Мной получено не было.
Сейчас я вам хочу рассказать о тех “подводных камнях”, с которыми мне пришлось столкнуться. И поверьте, я потерял много времени. Потерял бы еще больше, если бы мне не дал пару советов один добрый человек. Уже имевший опыт по работе с данной библиотекой.
Представляю перечень проблем, с которыми мне пришлось столкнуться:

Установка библиотеки

Саму библиотеку берем вот здесь. Я, к сожалению, не могу сказать (как обычно говорят в таких случаях), что необходимо скачать самую новую версию. Далее я объясню почему. Но я все-таки надеюсь, что со временем существующие в последней версии баги будут устранены. После получения архива с библиотекой, распакуйте его в нужную вам на сервере директорию.
В корневом каталоге библиотеки DOMPDF находиться файл конфигурации – dompdf_config.inc.php. В нем присутствуют базовые настройки библиотеки. Нас здесь интересуют следующие три:

Установка шрифтов

Изначально в библиотеке присутствует набор базовых шрифтов, однако среди них нет тех, которые поддерживали бы кириллицу. Поэтому если нужны кириллические шрифты или есть необходимость в расширении имеющегося множества уже готовых шрифтов, то придется заняться их установкой. И в этом нет ничего сложного. Устанавливать можно шрифты как TrueType (*.ttf) так и OpenType (*.otf). Для работы нам понадобится PHP скрипт load_font.php, который располагается в корне каталога библиотеки DOMPDF. Запуск данного скрипта необходимо производить из командной строки и на вход он принимает следующие параметры:

Для демонстрации произведем установку шрифта “roboto”. Предположим что каталог со шрифтом “roboto” и его стилями находится в директории “D:\font”. Соответственно если нам нужен только шрифт со стилем “normal”, то необходимо запустить скрипт со следующими параметрами:

Но если требуется установить шрифт “roboto” со всеми четырьмя его стилями (normal, bold, italic и bold-italic), то вызов скрипта уже будет иметь другой вид:

Обратите внимание на порядок передачи параметров скрипту для одновременного создания шрифта “roboto” с его четырьмя стилями. Первым передается путь к файлу шрифта со стилем “normal”, затем “bold” и т.д. Этот порядок нарушать ни в коем случае нельзя.

Создание шаблона для DOMPDF

Шаблон представляет обычную HTML страницу с добавлением некоторых новых свойств CSS, которые необходимы для работы самой библиотеки. Весь исходный код шаблона я здесь приводить не стану, так как в этом нет необходимости. Тем более что к статье прилагаются все необходимые файлы. Кстати в шаблоны можно встраивать код на PHP и JavaScript. В нашем случае в шаблоне будет располагаться шесть меток: метка для устанавливаемого номера страницы , метка с кодом цвета для подвала страницы, метка для текста на первой странице, метка для текста на второй странице и две метки и для вывода информационного текста в подвал. Также будет присутствовать встроенный скрипт на PHP для примитивного рисования и вывода нумерации страниц. Данные, которые могут занимать более одной страницы необходимо заключать в блок. Можно конечно этого не делать, но тогда не будет возможности вставлять разрывы страниц, да и текст может не равномерно заполнять страницу. Для вставки разрыва страницы, следует в стилях этого блока прописать одно из следующих свойств:

Нумерацию можно сделать и другим способом. Создаете CSS стиль:

А затем в необходимое вам в HTML коде место вставить конструкцию:

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

Примечание: При работе с графикой во встроенных скриптах, значение цвета каждой из RGB составляющих должно находиться в диапазоне 0 — 1. Т.е. каждую составляющую цвета в формате RGB требуется разделить на 255.

Создание модуля для экспорта данных

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

В результате должен получиться PDF файл следующего образца:

Источник

Генерация документов в doc, excel, pdf и других форматах на сервере

Выгрузка отчетов в различных форматах — типовая задача для многих проектов. И сейчас есть немало инструментов для этого. Среди них есть интересный вариант, который применяется, как мне кажется, не часто, но он однозначно стоит внимания. Потому что позволяет получить документ в нужном формате буквально одной командой. О нем и расскажу.

Как перевести файл php в pdf. Смотреть фото Как перевести файл php в pdf. Смотреть картинку Как перевести файл php в pdf. Картинка про Как перевести файл php в pdf. Фото Как перевести файл php в 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 у меня возникли затруднения. Поэтому на мой взгляд подход трудно будет применять для генерации сложных печатных форм, таких как счет-фактура.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *