php создание pdf файла

Создание PDF файлов в PHP

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

В данном посту мы поговорим о том, как можно создавать PDF файлы используя язык PHP. Для генерации PDF-документов существует библиотека FDPF. Далее речь пойдет об её использовании, и перед этим, её следует скачать к себе на компьютер.

Разместить файлы библиотеки следует в рабочей директории проекта. Расположена библиотека может в разных директориях, в этом случае следует задать местоположение посредством переменной PHP library path. Давайте рассмотрим пример вывода строки «Hello world» в PDF файл. Для этого следует создать PHP файл, и прописать в нём следующее.

В результате будет создан PDF-документ следующего вида:

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

В самом начале мы задали константу FPDF_FONTPATH, эта константа указывает папку в которой находятся шрифты, используемые для генерации документа. Затем подключается сам файл библиотеки fpdf.php. После подключения файла библиотеки создаётся экземпляр класса FPDF(), далее вся работа происходит с объектом этого класса. Метод SetFont() устанавливает параметры шрифта для текста. Метод AddPage() указывает на создание новой страницы в PDF-документе. Добавить текст в документ можно посредством добавления ячейки. Добавляется ячейка посредством метода Cell(), для которой задаются размеры, а так же их содержимое. Ячеек в самом деле может быть целое множество, с их помощью можно формировать структуру документа. Непосредственное формирование документа выполняется через метод Output(). Как вы уже заметили, все названия методов интуитивно понятные.

Формирование таблицы в FPDF

Пример указанный выше довольно простой, и для лучшего понимания стоит сделать уже что-то по сложнее. Давайте выведем некоторые динамические данные в цикле, и сформируем таблицу в PDF-документе. Этот пример показывает работу с библиотекой, в случае с некоторыми динамическими данными. Для начала сделаем вывод заголовков таблицы. В связи с тем, что в PDF файлах нет табличной структуры как в HTML, построение табличных данных там происходит посредством набора ячеек, каждая из которых получает параметры ширины, шрифта, фоновой заливки, и цвета рамки.

В результате был сформирован PDF-документ такого вида:
php создание pdf файла. Смотреть фото php создание pdf файла. Смотреть картинку php создание pdf файла. Картинка про php создание pdf файла. Фото php создание pdf файла

Первое, на что стоит обратить внимание в данном примере, это файл data-result.php который подключается после библиотеки FPDF. В данном файле формируется массив данных, который мы в дальнейшем будем использовать для генерации документа. Далее объявляется класс PDF, который является наследником класса FPDF. Класс содержит метод EventTable($event), в качестве входного параметра получает массив с данными. Метод создаёт строку в документе, с набором ячеек, с установленными параметрами шрифтов, и т.д. Вызывается метод в цикле, в котором передаются данные из функции getResult(). Функция getResult() возвращает массив, по сути, вместо функции может быть и обычная переменная с массивом данных.

По аналогии с формированием заголовков таблицы, можно заполнить таблицу уже готовыми данными. Для заполнения таблицы мы допишем код таким образом:

Результат формирования таблицы в PDF:
php создание pdf файла. Смотреть фото php создание pdf файла. Смотреть картинку php создание pdf файла. Картинка про php создание pdf файла. Фото php создание pdf файла

Добавление изображения в FPDF

Добавляется изображения в документ довольно просто. Сделать это можно посредством метода Image().

Источник

Создание PDF средствами PHP

Класс FPDF является чистым PHP кодом и легко подключается к скриптам командой include() или require(). Скачать класс и ознакомиться с документацией (в том числе на русском языке) можно на сайте www.fpdf.org.

Основная проблема при использовании класса — файлы кириллических шрифтов. Возьмем в папке C:/Windows/Fonts файлы шрифтов Arial, Times New Roman и Courier New:

Вместе с классом FPDF поставляется скрипт makefont/makefont.php для генерация файла описания шрифта. Использовать его просто. Для этого создаем РНР файл (скажем, mf.php):

Запустив скрипт mf.php в браузере, получим файлы:

Все эти файлы вместе с файлами шрифтов

надо поместить в директорию font класса. Впрочем, можно самому указать директорию, которая будет хранить шрифты. Для этого нужно определить константу FPDF_FONTPATH:

А теперь попробуем сформировать PDF-документ, используя класс FPDF. Для начала создадим файл makepdf.php, который будет осуществлять вывод PDF-документа прямо в браузер. В одной папке с этим файлом поместим файл класса fpdf.php и папку font с вложенными в нее файлами кириллических шрифтов.

Конструктор FPDF принимает следующие параметры:

После создания экземпляра класса необходимо указать используемые шрифты. Так как кириллический Arial не является в классе FPDF шрифтом, установленным по умолчанию, сначала надо подключить его при помощи метода AddFont().

Размер шрифта установим методом SetFont(). Этот метод можно вызывать несколько раз в одном скрипте, в то время как добавление AddFont() делается один раз для каждого шрифта. Формат записи SetFont() следующий:

Как видите, у функции SetFont() три параметра: название шрифта, стиль (пустая строка — обычный шрифт, B — жирный, I — курсив, U — подчеркнутый ) и размер. Этот метод может быть вызван до создания первой страницы и заданный шрифт будет сохраняться от страницы к странице. Если нужно изменить только размер шрифта, проще будет вызвать метод SetFontSize().

Используя функцию SetTextColor(), устанавливаем цвет шрифта документа. Цвет может быть представлен в RGB или grey scale. В нашем примере мы используем RGB-значения.

Необходимо заметить, что документ сначала создается в буфере и лишь потом, при вызове метода Output(), выводится в браузер. Поэтому общая схема работы с документом следующая: создаем в буфере документ методом Open(), затем добавляем в этот документ страничку методом AddPage(), формируем содержимое документа различными методами типа Cell(), Write(), Image() и, наконец, выводим его из буфера в браузер.

Метод Cell() выводит ячейку (прямоугольная область) с заданными границами, цветом фона и строкой. Верхний левый угол ячейки соответствует текущей позиции. Текст может быть выровнен. После вызова этого метода текущая позиция перемещается вправо или на следующую строку. Возможно задать ссылку на текст.

Метод Write() выводит текст от текущей позиции. При достижении правой границы (или встрече символа \n) строка обрывается и текст продолжает выводиться с левого края. После выполнения текущая позиция остается в конце текста. В текст можно добавлять ссылки.

Метод Image() выводит изображение на страницу. Поддерживаемые форматы: JPEG и PNG. Должен быть задан верхний левый угол. Размеры могут быть заданы разными вариантами:

Метод Ln() выполняет разрыв строки. Текущая абсцисса возвращается к левому краю страницы, а ордината увеличивается на величину, указанную в параметре.

Meтод Output() выводит документ в строку, локальный файл или в браузер. Если нужно, то сначала будет вызван метод Close() для закрытия документа.

Результат работы скрипта можно посмотреть здесь, а скачать исходные коды здесь.

Источник

Топ 5: Лучшие библиотеки генерации PDF с открытым исходным кодом для PHP

Автоматическое создание файлов PDF является одним из наиболее важных моментов проекта (коммерческий или нет). Вероятно, сгенерированные PDF-файлы предназначены не для вас или вашей команды, а для ваших требовательных клиентов, вам необходимо предоставить решение, отвечающее всем ожиданиям и требованиям.

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

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

Эта вершина основана на различных аспектах, таких как простота их реализации, варианты использования, пользователи библиотеки, функции и состояние разработки.

5. FPDF

FPDF — это PHP-класс, который позволяет генерировать PDF-файлы на чистом PHP, то есть без использования библиотеки PDFlib. F от FPDF означает бесплатно: вы можете использовать его для любого вида использования и изменять его в соответствии со своими потребностями.

У FPDF есть и другие преимущества: функции высокого уровня, основными его функциями являются:

FPDF не требует расширения (кроме Zlib для включения сжатия и GD для поддержки GIF). Последняя версия требует как минимум PHP 5.1.

В следующем фрагменте показан базовый PDF-файл, созданный с помощью FPDF:

4. МПДФ

Перед тем, как начать его использовать, мы рекомендуем вам прочитать документацию по адресу https://mpdf.github.io/.

В следующем фрагменте показан базовый файл PDF после установки композитора с помощью mPDF:

3. DOMPDF

Dompdf — это (в основном) совместимый с CSS 2.1 макет HTML и движок рендеринга, написанный на PHP. Это средство визуализации, основанное на стилях: оно будет загружать и читать внешние таблицы стилей, встроенные теги стилей и атрибуты стиля отдельных элементов HTML. Он также поддерживает большинство презентационных атрибутов HTML.

Характеристики

Требования

рекомендации

В следующем фрагменте показано, как создать простой PDF-файл и создать прямую загрузку с помощью Dompdf:

2. Снаппи (wkhtmltopdf)

Snappy — это библиотека PHP5, позволяющая создавать эскизы, снимки или PDF-файлы с URL-адреса или HTML-страницы. Он использует превосходные wkhtmltopdf и wkhtmltoimage на основе webkit, доступные для OSX, Linux, Windows. Вам нужно будет скачать wkhtmltopdf 0.12.x, чтобы использовать Snappy..

wkhtmltopdf и wkhtmltoimage — это инструменты командной строки с открытым исходным кодом (LGPLv3) для рендеринга HTML в PDF и различные форматы изображений с использованием механизма визуализации Qt WebKit. Они работают полностью «без головы» и не требуют отображения или обслуживания дисплея.

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

В следующем фрагменте показан базовый PDF-файл из HTML с использованием wkhtmltopdf в Windows с домашней страницей Github:

1. TCPDF

TCPDF — это библиотека PHP для простого и быстрого создания PDF-документов. Он поддерживает настройку и множество ключевых функций при работе с созданием файлов PDF.

Эта библиотека поддерживает шрифты Unicode и активно поддерживается Никола Асуни в хранилище Github.

Следующий пример, как отобразить HTML как PDF с TCPDF:

TCPDF в первую очередь, почему? Теоретически, первое место должно занимать wkhtmltopdf, так как он использует webkit для визуализации вашего HTML и, вероятно, будет более полезным для визуализации таких вещей, как canvas, SVG и т. Д. Однако вы должны знать, что не каждый разработчик может включить двоичные файлы (приложение или исполняемые файлы) на своих проектах или наслаждайтесь привилегиями делать с сервером все, что он хочет, именно тогда TCPDF становится первым вариантом для большинства разработчиков.

TCPDF стоит на первом месте, так как он наиболее прост в использовании библиотеки PHP для создания PDF-файлов и, тем не менее, является наиболее полным и обширным, поскольку не требует исполняемых файлов, поскольку все работает с простым PHP. Он охватывает основные требования всех проектов, для которых требуется функция создания PDF.

Если вам известна еще одна замечательная PHP-библиотека для создания PDF, поделитесь ею с сообществом в поле для комментариев внизу, получайте удовольствие!

Источник

Функции PDF

Функции PDF в PHP могут создавать PDF-файлы с использованием библиотеки PDFlib, автор Thomas Merz.

Документация этого раздела является обзором функций библиотеки PDFlib и не может считаться исчерпывающим справочником. Консультируйтесь в сопровождающей документации дистрибутива PDFlib. Там содержится полноценный обзор возможностей функций библиотеки PDFlib и самая свежая информация обо всех функциях.

В библиотеке PDFlib и в модуле PHP все функции и параметры имеют идентичные имена. Вам необходимо разобраться в некоторых основных понятиях PDF и PostScript, чтобы эффективно использовать это расширение.
Все размеры и координаты измеряются в пунктах PostScript. Обычно имеется 72 PostScript-пункта на дюйм, но это зависит от разрешающей способности на выводе. См. в PDFlib-документации, включённой в дистрибутив PDFlib, объяснение используемой системы координат.

Обратите внимание, что большинство функций PDF требуют pdf object в качестве первого параметра. См. примеры далее.

Примечание: Имеется альтернативный модуль PHP для создания PDF-документов на базе FastIO’s ClibPDF. См. раздел ClibPDF. Обратите внимание, что ClibPDF имеет несколько иной API по сравнению с PDFlib.

Таблица 1. Не рекомендуемые функции и их замены

Старая функцияЗамена
pdf_put_image()Больше не нужна.
pdf_execute_image()Больше не нужна.
pdf_get_annotation()pdf_get_bookmark() с использованием тех же параметров.
pdf_get_font() pdf_get_value() с передачей «font» в качестве второго параметра.
pdf_get_fontsize() pdf_get_value() с передачей «fontsize» в качестве второго параметра.
pdf_get_fontname() pdf_get_parameter() с передачей «fontname» в качестве второго параметра.
pdf_set_info_creator() pdf_set_info() с передачей «Creator» в качестве второго параметра.
pdf_set_info_title() pdf_set_info() с передачей «Title» в качестве второго параметра.
pdf_set_info_subject() pdf_set_info() с передачей «Subject» в качестве второго параметра.
pdf_set_info_author() pdf_set_info() с передачей «Author» в качестве второго параметра.
pdf_set_info_keywords() pdf_set_info() с передачей «Keywords» в качестве второго параметра.
pdf_set_leading() pdf_set_value() с передачей «leading» в качестве второго параметра.
pdf_set_text_rendering() pdf_set_value() с передачей «textrendering» в качестве второго параметра.
pdf_set_text_rise() pdf_set_value() с передачей «textrise» в качестве второго параметра.
pdf_set_horiz_scaling() pdf_set_value() с передачей «horizscaling» в качестве второго параметра.
pdf_set_text_matrix()Больше не доступна.
pdf_set_char_spacing() pdf_set_value() с передачей «charspacing» в качестве второго параметра.
pdf_set_word_spacing() pdf_set_value() с передачей «wordspacing» в качестве второго параметра.
pdf_set_transition() pdf_set_parameter() с передачей «transition» в качестве второго параметра.
pdf_open() pdf_new() плюс последующий вызов pdf_open_file()
pdf_set_font() pdf_findfont() плюс последующий вызов pdf_setfont()
pdf_set_duration() pdf_set_value() с передачей «duration» в качестве второго параметра.
pdf_open_gif() pdf_open_image_file() с передачей «gif» в качестве второго параметра.
pdf_open_jpeg() pdf_open_image_file() с передачей «jpeg» в качестве второго параметра.
pdf_open_tiff() pdf_open_image_file() с передачей «tiff» в качестве второго параметра.
pdf_open_png() pdf_open_image_file() с передачей «png» в качестве второго параметра.
pdf_get_image_width() pdf_get_value() с передачей «imagewidth» в качестве второго параметра и изображения в качестве третьего параметра.
pdf_get_image_height() pdf_get_value() с передачей «imageheight» в качестве второго параметра и изображения в качестве третьего параметра.

Подсказки по установке PDFlib 3.x

Любые версии PHP 4 после 9 марта 2000 не поддерживают версии PDFlib, ранее 3.0.

PDFlib 3.0 или выше поддерживается в PHP 3.0.19 и позднее.

Большинство функций довольно легко использовать. Самое трудное это, пожалуй, создание очень простого PDF-документа. Следующий пример должен помочь начать. Он создаёт test.pdf из одной страницы. Эта страница содержит текст «Times Roman outlined» шрифтом outlined 30pt. Текст также подчёркнут.

Пример 1. Создание PDF-документа с помощью PDFlib

Скрипт getpdf.php возвращает pdf-документ:

Дистрибутив PDFlib содержит более сложный пример, где создаётся страница с аналоговыми часами. Здесь мы используем возможность PDFlib создания в памяти, чтобы не использовать временные файлы. Этот пример, конвертированный в PHP из примера PDFlib, таков: (Такой же пример имеется в документации CLibPDF.)

Пример 2. pdfclock из дистрибутива PDFlib

= 200 ;
$margin = 20 ;
$pagecount = 10 ;

# to see some difference
sleep ( 1 );
>

Источник

Как сгенерировать pdf-файл: Битрикс, php и TCPDF

25 июня 2020 15:45:37 Частенько клиенты подкидывают нам новые интересные задачки. Вот намедни бизнес-школа обратилась с просьбой сделать им на сайте конструктор, который по заданным параметрам формирует пользователю pdf-файл со списком курсов. Рассказываю, как это было.

Создать конструктор курсов и тренингов для сайта на CMS 1С-Битрикс. В конструкторе: выбор временного промежутка, интересующих рубрик и города проведения. Пользователь выбирает параметры, на их основе формируется pdf-файл со списком всех семинаров и курсов, которые проводятся в эти даты. Курсы разбиты по городам и направлениям. Из файла можно перейти напрямую к описанию курса и сделать заказ на сайте.

Вот, что получилось https://www.itctraining.ru/raspisanie/
Теперь поговорим непосредственно о технической стороне вопроса.

План работы.

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

1. Создание непосредственно формы конструктора.
2. Передача полученных данных при помощи ajax в файл обработки.
3. Выборка из всех элементов на сайте только тех, которые отвечают заданным условиям (дата, рубрики, город проведения).
4. Генерация PDF-файла в стиле сайта и его отображение пользователю.

Создаем шапку и футер pdf файла.

Требовалось, чтобы сгенерированный pdf файл выглядел как на фирменном бланке. Соответственно, нужны шапка с логотипом и контактами. И футер с дополнительной информацией.

Этот простой код сделал файл аккуратным и удобным для чтения.

Проблема №2. Как открыть сгенерированный библиотекой TCPDF файл в новом окне после выполнения ajax запроса.

Заглянем в документацию. TCPDF поддерживает несколько вариантов формирования файла.

Таким образом, TCPDF сохраняет файл на сервере и отдает его пользователю. А delete.php содержит скрипт, который удаляет файл. И место экономится, и пользователь доволен!

Вот так удалось справиться с поставленной задачей. Хотите такой же конструктор? Или может быть лучше? Вы знаете, кому звонить)

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

План работы.

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

1. Создание непосредственно формы конструктора.
2. Передача полученных данных при помощи ajax в файл обработки.
3. Выборка из всех элементов на сайте только тех, которые отвечают заданным условиям (дата, рубрики, город проведения).
4. Генерация PDF-файла в стиле сайта и его отображение пользователю.

Создаем шапку и футер pdf файла.

Требовалось, чтобы сгенерированный pdf файл выглядел как на фирменном бланке. Соответственно, нужны шапка с логотипом и контактами. И футер с дополнительной информацией.

Этот простой код сделал файл аккуратным и удобным для чтения.

Проблема №2. Как открыть сгенерированный библиотекой TCPDF файл в новом окне после выполнения ajax запроса.

Заглянем в документацию. TCPDF поддерживает несколько вариантов формирования файла.

Таким образом, TCPDF сохраняет файл на сервере и отдает его пользователю. А delete.php содержит скрипт, который удаляет файл. И место экономится, и пользователь доволен!

Вот так удалось справиться с поставленной задачей. Хотите такой же конструктор? Или может быть лучше? Вы знаете, кому звонить)

Источник

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

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