Web-разработка

FPDF — Урок 2: Заголовок, подвал, разрыв страницы и изображение

, , , ,
31 декабря 2009, 09:33

Из предыдущего Урока (FPDF – Урок 1: Простой пример) мы научились Выводить Hello World!, и разобрали самые основы основ создания PDF Документов. Теперь пора перейти к следующему уроку, в котором будет объяснены некоторые моменты о Заголовке, подвале, о разрыве страницы, и вкратце о том как добавлять изображения в наш документ.

Ниже приведен код примера, в котором две страницы с заголовком(Верхний колонтитул), подвалом(Нижний колонтитул) и логотипом:

require('Fpdf\fpdf.php');
 
class PDF extends FPDF
{
//Заголовок страницы
function Header()
{
    //Логотип
    $this->Image('logo_pb.png',10,8,33);
    //шрифт Arial, жирный, размер 15
    $this->SetFont('Arial','B',15);
    //Перемещаемся вправо
    $this->Cell(80);
    //Название
    $this->Cell(30,10,'Title',1,0,'C');
    //Разрыв строки
    $this->Ln(20);
}
 
//Подвал страницы
function Footer()
{
    //Позиция на 1,5 cm от нижнего края страницы
    $this->SetY(-15);
    //Шрифт Arial, курсив, размер 8
    $this->SetFont('Arial','I',8);
    //Номер страницы
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}
 
//Теперь будем пользоваться унаследованным от FPDF классом PDF 
$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
    $pdf->Cell(0,10,'Printing line number '.$i,0,1);
$pdf->Output();

Этот пример использует методы Header () и Footer () для обработки верхних и нижних колонтитулов (заголовка и подвала). Header () — Вызывается автоматически методом AddPage(), поэтому его не нужно вызывать из приложения, но если Вы захотите управлять этим выводом то нужно его переписать. Footer () — Ситуация с этим методом аналогичная с методом Header (), но данный метод будет вызываться автоматически методами AddPage() и Close().

Логотип выводится с помощью метода Image (), который принимает следующие параметры — адрес вставляемого изображения, координаты верхнего левого угла, и ширина изображения. Высота изображения вычисляется автоматически и при этом соблюдаются пропорции изображения.

Чтобы вывести номер страницы, нулевое значение передается как ширина ячейки. Это означает, что ячейка должна продлиться до правого края страницы, это удобно, чтобы текст располагался в центре документа. Текущий номер страницы возвращают метод PageNo (), а что касается общего числа страниц, оно получается с помощью специального значения {nb} которое будет заменено на общее количество страниц (при условии что Вы вызвали метод AliasNbPages ()). Обратите внимание на использование метода SetY (), который позволяет задавать позицию в абсолютном месте на странице, начиная с верхней или нижней границы.

Другая интересная особенность используется при автоматическом разрыве страницы. Как только ячейка будет пересекать предел в страницы на 2 см от нижнего края (значение по умолчанию), разрыв не производится и шрифт остается таким же. Хоть и для Колонтитула выбран свой собственный шрифт Arial, тело документа продолжает использовать Times. Этот механизм автоматического восстановления распространяется также на цвета и ширину линии. Предел, который может вызывать разрывы страниц, можно установить с помощью метода SetAutoPageBreak (), который принимает следующие параметры — включать или выключать режим автоматического разрыва страниц, расстояние от низа страницы (которое задает предел).

Результат Урока 2: Заголовок, подвал, разрыв страницы и изображение :

FPDF - Урок 2: Заголовок, подвал, разрыв страницы и изображение

FPDF - Урок 2: Заголовок, подвал, разрыв страницы и изображение

В следующем уроке можно будет узнать как правильно перенести строки и можно будет научиться управлению цветом по всему документу — FPDF – Урок 3: Переносы строк и работа с цветом.

Ссылки:

Я надеюсь что все перевел правильно и понятно, если что обращайтесь за помощью к мануалу.