Страницы (HasPages)
Добавление страниц
php
use Yeeefang\TcpdfNext\Core\Document;
use Yeeefang\TcpdfNext\ValueObjects\PageSize;
use Yeeefang\TcpdfNext\Contracts\Orientation;
$pdf = Document::create()
->addPage() // A4 книжная (по умолчанию)
->addPage(PageSize::Letter()) // US Letter
->addPage(PageSize::A3(), Orientation::Landscape) // A3 альбомная
->addPage(PageSize::Legal()); // US LegalРазмеры страниц
PageSize — это final readonly объект значений с фабричными методами:
Серия ISO 216 A
A0(), A1(), A2(), A3(), A4(), A5(), A6()
Серия ISO 216 B
B0(), B1(), B2(), B3(), B4(), B5()
Североамериканские
Letter(), Legal(), Tabloid()
Пользовательский размер
php
// Ширина и высота в пунктах (1 pt = 1/72 дюйма)
$custom = new PageSize(400.0, 600.0, 'custom');
// Или из строки с названием
$a4 = PageSize::fromName('A4');Переключение ориентации
php
$landscape = PageSize::A4()->landscape();
$portrait = PageSize::A4()->portrait();Поля
php
use Yeeefang\TcpdfNext\ValueObjects\Margin;
$pdf->setMargins(Margin::symmetric(15.0, 10.0)) // 15 мм по вертикали, 10 мм по горизонтали
->setLeftMargin(20.0)
->setTopMargin(25.0)
->setRightMargin(20.0);Фабричные методы:
Margin::uniform(10.0)— 10 мм со всех сторонMargin::symmetric(15.0, 10.0)— вертикально 15 мм, горизонтально 10 ммMargin::zero()— без полейnew Margin(top, right, bottom, left)— явно
Автоматический разрыв страницы
php
$pdf->setAutoPageBreak(true, 20); // Разрыв в 20 мм от нижнего края
$pdf->setAutoPageBreak(false); // ОтключитьКогда включено, контент, который выходит за пределы страницы, автоматически вызывает addPage().
Позиция
php
$pdf->setX(50.0); // Установить горизонтальную позицию
$pdf->setY(100.0); // Установить вертикальную позицию
$pdf->setXY(50.0, 100.0); // Установить обе
$x = $pdf->getX();
$y = $pdf->getY();
$width = $pdf->getPageWidth();
$height = $pdf->getPageHeight();
$margins = $pdf->getMargins(); // Возвращает объект MarginМанипуляции со страницами
php
$pdf->movePage(3, 1); // Переместить страницу 3 на позицию 1
$pdf->copyPage(2); // Дублировать страницу 2
$pdf->deletePage(4); // Удалить страницу 4Группы страниц
Группируйте страницы для независимой нумерации (например, по главам):
php
$pdf->startPageGroup();
$groupPageNo = $pdf->getGroupPageNo();Области страницы
Определите прямоугольные области, которые контент должен обходить:
php
$pdf->addPageRegion(10, 10, 50, 50); // x, y, ширина, высота
$regions = $pdf->getPageRegions();
$pdf->removePageRegion(0);
$pdf->setPageRegions($regions);Информация о странице
php
$currentPage = $pdf->getPage(); // Индекс текущей страницы
$totalPages = $pdf->getNumPages(); // Общее количество страниц