Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #73, ЯНВАРЬ 2005 г.

PDF с нуля

Никита Кислицин

Хакер, номер #073, стр. 073-116-3


А сейчас давай я расскажу, как осуществляется создание pdf-документа и его базовое форматирование.

После того как мы подключили код класса fpdf, надо создать новый объект и зарегистрировать несколько используемых шрифтов:

$pdf = new FPDF();

$pdf-> Open();

$pdf-> AddFont('TimesNewRomanPSMT','','times.php');

$pdf-> SetFont('TimesNewRomanPSMT','',12);

Функция AddFont регистрирует шрифт в списке используемых. Ее первый аргумент определяет название шрифта, оно должно совпадать с тем, что находится в файле описания. Там оно хранится в переменной $name. Второй аргумент задает форматирование текста: B - bold, I - italic и IB - смешанный. Если аргумент не указан, шрифт используется обычный. Третий аргумент функции – это РНР-файл описания шрифта, который мы с тобой недавно создавали.

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

Пример функции, рисующей заголовок документа в нашем классе pdf.class.php

class pArt extends FPDF {

function top($title,$image,$author) {

$this-> Image($image,6,6,40,20); #Рисуем классное лого

$this-> SetFont('TimesNewRomanPSMT','',18); #Шрифт для заголовка

$this-> Cell(210,4,$title,0,0,'C'); #Выводим прямоугольник с текстом

$this-> Ln(); #Перевод строки

$this-> SetFont('TimesNewRomanPSMT','B',12); #Шрифт поменьше

$this-> Cell(250,20,$author,0,0,'R',1);

$this-> Ln();

}

}

Несложно видеть, что в моем классе pArt описан только один метод с именем top. Он генерирует заголовок для документа – как ты понимаешь, в нашем примере здесь будет размещено лого, название статьи, автор и прочая лабуда. В общем-то, я там все прокомментировал, так что вряд ли у тебя будут проблемы. Расскажу лучше о базовых функциях вроде Cell и Image. Как ты мог заметить, первая функция рисует прямоугольник с текстом внутри. Хотя может нарисовать и без текста, это уже как ты захочешь. Более того, прямоугольник можно залить определенным текстом и сделать границу непрозрачной. Формат у метода такой:

Назад на стр. 073-116-2  Содержание  Вперед на стр. 073-116-4