Из предыдущего Урока (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 – Урок 3: Переносы строк и работа с цветом.
Ссылки:
- http://www.fpdf.org/en/dl.php?id=92 – Мануал на русском
- tutorial2.zip – Такой файл должен получиться при выполнении данного Урока
- FPDF – библиотека для создания PDF-файлов на PHP
- http://www.fpdf.org/en/tutorial/tuto2.htm – Оригинал – Tutorial 2: Header, footer, page break and image
Я надеюсь что все перевел правильно и понятно, если что обращайтесь за помощью к мануалу.