• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
+380 (44) 364 05 71

Рано или поздно, большинство разработчиков сталкиваются с необходимостью экспорта данных в 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
Спасибо, что выбираете FREEhost.UA