Рано или поздно, большинство разработчиков сталкиваются с необходимостью экспорта данных в PDF.
Сегодня, я бы хотел вкратце рассказать про PHP библиотеку FPDF. Это простой и бесплатный скрипт, позволяющий генерировать PDF документы.
Для начала работы, нужно сказать скрипт, это можно сделать на сайте FPDF
Перед началом работы расскажу, наверное про самую главную тонкость FPDF – шрифты. Причина в том что библиотека работает со шрифтами в специальном формате.
Для того чтоб выполнить конвертацию из TTF рекомендую использовать сервис http://fpdf.fruit-lab.de/index.php?id=3
Просто указываете путь к файлу у себя на компьютере, выбираете нужную кодировку жмете convert. Набор файлов готов. Скачиваете поочередно три файла php, afm, z. Файл с расширением .php.txt нужно переименовать в .php. Все файлы шрифтов стоит размещать в отдельном каталоге.
Далее нужно объявить специальную константу, которая укажет место размещение шрифтов для FPDF
define('FPDF_FONTPATH',__DIR__.'/fonts');
Если константа не объявлена FPDF будет искать шрифты в текущем каталоге.
Теперь можно начинать.
FPDF оформлен в виде класса, чтоб начать с ним работать, достаточно сделать следующее
require_once('fpdf.php');
$pdf=new FPDF();
Конструктор FPDF может принимать три параметра:
1. Ориентация страницы (P или L) книжная или альбомная
2. Размерность (pt,mm,cm или in)
3. Размер страницы документа (A3, A4, A5, Letter and Legal)
По умолчанию документ создается книжной ориентации, с mm, формата A4.
Далее нам нужно загрузить все наши сконвертированные шрифты, делается это так:
$pdf->AddFont('Arial','','80f775b14d7bc9102a67640732d999f3_arial.php');
$pdf->AddFont('Arial','B','7ab77dd095b02318e29acd66398b9912_arialbd.php');
$pdf->AddFont('Arial','I','c0df212b28017d287e02bb335d9604c6_ariali.php');
Параметры:
1. название шрифта
2. пустое значение — стандартный шрифт
B - жирный
I - курсив
так же могут быть комбинации BI или IB.
3. название файла с описанием шрифта.
Теперь давайте установим некоторые параметры документа.
$pdf->SetTitle('First document');
$pdf->SetAuthor('Eugene S.');
Параметры установлены, можно создадавать первую страницу нашего документа, далется это так:
$pdf->AddPage('P');
AddPage принимает один параметр P или L, в зависимости от ориентации страницы. Если параметр не передан, страница создается как P.
Давайте выведем наше сообщение:
$pdf->SetFont('Arial','B',30);
$pdf->SetTextColor(16,16,16);
$pdf->SetXY(10,10);
$pdf->write(7,'Hello world');
В первой строке кода мы установили шрифт, которым будем выводить сообщение, его тип и размер. Будьте внимательны, если вы попытаетесь обратиться к шрифту, которого не существует то получите сообщение об ошибке вида «FPDF error: Undefined font: arial B»
Вторая строка кода устанавливает цвет нашего будущего сообщения. Формат задания цвета RGB (Red, Green, Blue).
Третья строка позиционирует курсор, по координате X и Y 10 mm соответственно.
И наконец четвертая строка выводит сообщение. Параметр 7 означает высоту строки.
Как видите все просто!
Еще один полезный метод вывода текста - Call. Метод можно использовать для вывода прямоугольников с текстом, например во время формирования таблиц. Вот как это работает:
$pdf->Cell(60,7,'another text',1,'LTRB',1,'C');
Параметры следующие:
1. Ширина. Если указан указан 0, прямоугольник будет до правой границы документа.
2. Высота.
3. Сам текст.
4. Единица означает что прямоугольник будет обрамлен контуром, в противном случае 0.
5. Видимые линии контура (Left, Top, Bottom, Right).
6. Требуется ли перевод строки после прямоугольника.
7. Выравнивание текста внутри прямоугольника (Left, Right, Center).
И теперь давайте добавим изображение на страницу:
$pdf->Image('logo.png',40,50);
Документ готов, его можно сохранить в файле example.pdf на диске. Делается это следующим образом:
$pdf->Output('example.pdf','F')
Метод Output принимает 2 параметра
1. Название файла, в который будет сохраняться вывод.
2. Метод сохранения. Он может быть:
I – отправляет файл прямо в броузер. Если подключен плагин для отображения PDF, он будет сразу показан, если нет, будет выведено диалоговое сообщение, для сохранения файла.
D – отправляет данные в броузер с указанием необходимости сохранения файла.
F – сохраняет файл на локальный диск.
S —возвращает документ как строку.
Для того чтоб уменьшить количество кода при дальнейшей работе с библиотекой, можно сделать следующее:
class mypdf extends FPDF{
public function defaultSetup(){
$this->SetTitle('First document');
$this->SetAuthor('Eugene S.');
$pdf->AddPage();
}
public function buildTable($rows){
$rowsCount=count($rows);
for ($i=0;$i<$rowsCount;$i++)
$pdf->Cell(60,7,$rows[$i],1,'LTRB',1,'R');
}
}
$pdf=new mypdf();
$pdf->defaultSetup();
$rows=array(
"row1",
"row2",
"row3"
);
$pdf->buildTable($rows);
$pdf-> Output();
При помощи такой нехитрой операции, можно расширять класс FPDF своими методами, и уменьшить количество кода.
Больше информации по работе с библиотекой можно получить на http://www.fpdf.org/en/doc/index.php
Дата: 27.11.2013 Автор: Евгений Шерман
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus