Skip to content

Страницы (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();    // Общее количество страниц

Распространяется по лицензии LGPL-3.0-or-later.