Создание PDF средствами PHP. Часть 2

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

<?php
define('FPDF_FONTPATH', 'font/');
require 'fpdf.php';
// Создадаем экземпляр класса
$pdf = new FPDF();
$pdf->Open();
//Подключаем кириллические шрифты
$pdf-> AddFont('ArialMT','','arial.php');
$pdf-> AddFont('Arial-BoldMT','','arialbd.php');
$pdf-> AddFont('Arial-ItalicMT','','ariali.php');
$pdf-> AddFont('Arial-BoldItalicMT','','arialbi.php');
// Добавляем страницу в документ
$pdf->AddPage();
// Задаем режим отображения
$pdf->SetDisplayMode('real','default');
// Устанавливаем шрифт и его размер
$pdf-> SetFont('Arial-BoldMT','',22);
// Устанавливаем цвет текста заголовка (красный)
$pdf->SetTextColor(255,0,0);
// Устанавливаем цвет заливки (желтый)
$pdf->SetFillColor(255,255,0);
// Задаем абсциссу и ординату текущей позиции
$pdf->SetXY(20,20);
// Устанавливаем цвет для рисования контура вокруг заголовка (красный)
$pdf->SetDrawColor(255,0,0);
// Выводим ячейку (прямоугольную область), которая будет заголовком:
// 100 - ширина ячейки; 10 - высота ячейки;
// $text - текст; 1 - толщина рамки;
// 1 - текущая позиция после вывода ячейки будет в начале следующей строки;
// 'C' - выравнивание по центру; 1 - заливка фона ячейки
$text = 'ЗАО "Рога и копыта"';
$pdf->Cell(150, 10, $text, 1, 1, 'C', 1);
// Вставляем изображение, которое будет ссылкой
$pdf->Image('elephpant.jpg',10,35,0,0,'JPG','http://www.php.net/');
// Устанавливаем шрифт для текста
$pdf-> SetFont('ArialMT','',12);
// Устанавливаем позицию начала текста
$pdf->SetXY (10,140);
// Устанавливаем цвет текста
$pdf->SetTextColor(10,10,10);
$pdf->Write(5,'Пешеходов  надо  любить.  Пешеходы  составляют  большую  часть  человечества.  Мало  того  —  лучшую  его  часть.  Пешеходы  создали  мир.  Это  они  построили  города,  возвели  многоэтажные  здания,  провели канализацию  и  водопровод, замостили улицы и осветили их электрическими лампами.');
// Устанавливаем шрифт для текста
$pdf-> SetFont('Arial-ItalicMT','',12);
$pdf->Write(5,'Это они распространили культуру по всему свету, изобрели книгопечатание, выдумали порох, перебросили мосты через реки, расшифровали египетские иероглифы, ввели в употребление безопасную бритву, уничтожили торговлю рабами и установили, что из бобов сои можно изготовить сто четырнадцать вкусных питательных блюд.');
// Разрыв строки
$pdf->Ln();
$pdf->Ln();
// Устанавливаем шрифт для текста
$pdf-> SetFont('Arial-BoldMT','',12);
// Устанавливаем цвет текста (синий)
$pdf->SetTextColor(0,0,255);
$pdf->MultiCell(0,5,'И когда все было готово, когда родная планета приняла сравнительно благоустроенный вид, появились автомобилисты.',1,'R',1);
// Разрыв строки
$pdf->Ln();
$pdf->Ln();
// Устанавливаем шрифт для текста
$pdf-> SetFont('Arial-BoldItalicMT','',12);
// Устанавливаем цвет текста (зеленый)
$pdf->SetTextColor(0,200,0);
$pdf->MultiCell(0,5,'Надо заметить, что автомобиль тоже был изобретен пешеходами. Но автомобилисты об этом как-то сразу забыли. Кротких и умных пешеходов стали давить. Улицы, созданные пешеходами, перешли во власть автомобилистов. Мостовые стали вдвое шире, тротуары сузились до размера табачной бандероли. И пешеходы стали испуганно жаться к стенам домов.',0,'J',0);
// Выводим созданный документ в браузер
$pdf->Output('example.pdf','I');
?>

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

  • Ориентация страницы: P — книжная, L — альбомная; по умолчанию P
  • Единица измерения: pt — точка, mm — миллиметр, cm — санатиметр, in — дюйм; по умолчанию mm
  • Размер документа: A3, A4, A5, Letter, Legal или специальный формат, выраженный в виде массива из двух элементов: ширина и высота

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

AddFont(string family [, string style [, string file]])

Первым аргументом мы указываем наименование шрифта. Его можно посмотреть в сгенерированном РНР файле (значение переменной $name). Второй аргумент — форматирование текста (B — Bold, I — Italic и смешанный BI или IB). Если аргумент пустой, то шрифт обычный. Третий аргумент — РНР файл описания. Теперь эти шрифты можно применять в данном документе.

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

SetFont(string family [, string style [, float size]])

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

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

Продолжение следует…

Комментариев: 7

  1. haZe:

    Очень интересно! Спасибо!
    А можно как нить отображать пдф прям в браузере, но без акробата или подобных программ?

  2. Идея:

    да интересно PDF моно отбражать в браузере?

  3. admin:

    haZe, Идея: PDF можно просматривать в браузере после установки плагина.

  4. Samir:

    Если честно, то ничего не понял, где можно почитать дополнительно?

  5. Тимур:

    Спасибо за инструкцию!

  6. роберт:

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

  7. Дмитрий О.:

    Доброе время суток. Не хочу портить картину, но с кириллицей у меня fpdf не подружился. Пришлось перейти на tcpdf - он намного удобнее и посерьезнее.

Оставьте свой отзыв