Skip to content

API документа

Класс Document (TcpdfNext\Core\Document) является основной точкой входа для создания PDF-документов. Он компонует 12 трейтов, каждый из которых привносит группу связанных методов. Все мутирующие методы возвращают static для fluent-цепочки.

php
use TcpdfNext\Core\Document;

$pdf = Document::create()
    ->setTitle('Invoice')
    ->addPage()
    ->setFont('Helvetica', size: 12)
    ->cell(width: 0, height: 10, text: 'Hello World')
    ->save('/output/invoice.pdf');

HasMetadata

Методы для установки метаданных на уровне документа (Title, Author, Subject, Keywords, Creator).

setTitle(string $title): static
Установить заголовок документа (отображается в заголовке окна PDF-просмотрщика и XMP dc:title).
setAuthor(string $author): static
Установить автора документа (XMP dc:creator).
setSubject(string $subject): static
Установить тему документа (XMP dc:description).
setKeywords(string|array $keywords): static
Установить ключевые слова документа. Принимает строку через запятую или массив строк.
setCreator(string $creator): static
Установить название приложения-создателя (XMP xmp:CreatorTool). По умолчанию 'TCPDF-Next'.

HasPages

Методы для добавления, удаления, перемещения и настройки страниц.

addPage(?PageSize $pageSize = null, ?Orientation $orientation = null): static
Добавить новую страницу. Опционально можно переопределить размер и ориентацию по умолчанию только для этой страницы.
deletePage(int $pageNumber): static
Удалить страницу по заданному 1-индексному номеру. Выбрасывает OutOfRangeException, если страница не существует.
movePage(int $from, int $to): static
Переместить страницу с одной позиции на другую. Оба индекса 1-базированные.
copyPage(int $pageNumber): static
Дублировать страницу и добавить копию после последней страницы.
setAutoPageBreak(bool $auto, float $margin = 0): static
Включить или отключить автоматические разрывы страниц. При включении новая страница добавляется, когда контент достигает нижнего поля минус заданное значение.
setMargins(float $left, float $top, float $right = -1, float $bottom = -1): static
Установить поля страницы в пользовательских единицах. Если right = -1, зеркалирует left. Если bottom = -1, зеркалирует top.
setLeftMargin(float $margin): static
Установить только левое поле.
setTopMargin(float $margin): static
Установить только верхнее поле.
setRightMargin(float $margin): static
Установить только правое поле.
setCellPadding(float $padding): static
Установить внутренний отступ ячейки по умолчанию в пользовательских единицах.
setPageSize(PageSize $size): static
Установить размер страницы по умолчанию для новых страниц.
setOrientation(Orientation $orientation): static
Установить ориентацию по умолчанию для новых страниц.
pageCount(): int
Вернуть общее количество страниц в документе.
currentPage(): int
Вернуть номер текущей страницы (1-базированный).
setPage(int $pageNumber): static
Переместить курсор на существующую страницу.

HasTypography

Методы для выбора шрифта, размера, межбуквенного интервала и измерения строк.

setFont(string $family, string $style = '', float $size = 0): static
Выбрать шрифт по имени семейства. Стиль может быть '' (обычный), 'B' (жирный), 'I' (курсив) или 'BI'. Размер 0 сохраняет текущий.
setFontSize(float $size): static
Установить размер шрифта в пунктах.
setFontSpacing(float $spacing): static
Установить дополнительный межбуквенный интервал в пользовательских единицах.
setFontStretching(float $percent): static
Установить горизонтальное масштабирование шрифта в процентах (100 = нормальное).
getStringWidth(string $text, string $family = '', string $style = '', float $size = 0): float
Вычислить ширину строки в пользовательских единицах, используя указанные (или текущие) настройки шрифта.
getCharWidth(string $char): float
Вернуть ширину одного символа в пользовательских единицах.
getNumberOfLines(string $text, float $width): int
Оценить, сколько строк займёт текст при заданной ширине.

HasColors

Методы для установки цветов обводки, заливки и текста с опциональной альфа-прозрачностью.

setDrawColor(int $r, int $g = -1, int $b = -1): static
Установить цвет обводки. Передайте одно значение для оттенка серого или три для RGB.
setFillColor(int $r, int $g = -1, int $b = -1): static
Установить цвет заливки для фигур и фонов ячеек.
setTextColor(int $r, int $g = -1, int $b = -1): static
Установить цвет текста.
setAlpha(float $alpha, string $blendMode = 'Normal'): static
Установить альфа-прозрачность (0.0 = полностью прозрачный, 1.0 = полностью непрозрачный) и опциональный режим наложения.
setDrawColorObject(Color $color): static
Установить цвет обводки, используя объект значения Color (поддерживает RGB, CMYK, Gray, Spot).
setFillColorObject(Color $color): static
Установить цвет заливки, используя объект значения Color.
setTextColorObject(Color $color): static
Установить цвет текста, используя объект значения Color.

HasTextOutput

Методы для рендеринга текстового контента на странице.

cell(float $width, float $height = 0, string $text = '', string|int $border = 0, int $ln = 0, Alignment $align = Alignment::Left, bool $fill = false, string $link = ''): static
Напечатать однострочную ячейку. Ячейка может иметь рамку, фоновую заливку и опциональную гиперссылку.
multiCell(float $width, float $height, string $text, string|int $border = 0, Alignment $align = Alignment::Justified, bool $fill = false, int $maxLines = 0): static
Напечатать многострочный текстовый блок с автоматическим переносом строк.
text(float $x, float $y, string $text): static
Разместить текстовую строку по точным координатам. Без переноса строк и границ ячейки.
write(float $height, string $text, string $link = ''): static
Записать потоковый текст с текущей позиции. Поддерживает инлайн-гиперссылки.
writeHtml(string $html, bool $lineBreak = true, bool $fill = false, bool $resetStyles = false, string $align = ''): static
Отрендерить HTML-строку с поддержкой CSS. Поддерживает распространённые HTML-теги, таблицы, списки и инлайн-стили.
writeHtmlCell(float $width, float $height, float $x, float $y, string $html, string|int $border = 0, int $ln = 0, bool $fill = false): static
Отрендерить HTML внутри позиционированной ячейки.
ln(float $height = 0): static
Вставить разрыв строки. Если высота = 0, используется высота последней напечатанной ячейки.

HasDrawing

Методы для рисования линий, фигур и стрелок.

line(float $x1, float $y1, float $x2, float $y2): static
Нарисовать прямую линию между двумя точками.
rect(float $x, float $y, float $w, float $h, string $style = ''): static
Нарисовать прямоугольник. Стиль: '' (обводка), 'F' (заливка), 'DF' (обводка + заливка).
roundedRect(float $x, float $y, float $w, float $h, float $r, string $roundCorner = '1111', string $style = ''): static
Нарисовать прямоугольник со скруглёнными углами. Битовая маска roundCorner управляет, какие углы скруглены.
circle(float $x, float $y, float $r, string $style = '', array $angles = [0, 360]): static
Нарисовать окружность (или дугу) с центром (x, y) и радиусом r.
ellipse(float $x, float $y, float $rx, float $ry, float $angle = 0, string $style = ''): static
Нарисовать эллипс с центром (x, y), горизонтальным радиусом rx и вертикальным радиусом ry.
polygon(array $points, string $style = ''): static
Нарисовать многоугольник из массива пар координат [x, y].
arrow(float $x1, float $y1, float $x2, float $y2, int $headStyle = 0, float $armSize = 5, int $armAngle = 15): static
Нарисовать линию со стрелкой.
curve(float $x0, float $y0, float $x1, float $y1, float $x2, float $y2, float $x3, float $y3, string $style = ''): static
Нарисовать кубическую кривую Безье.
setLineWidth(float $width): static
Установить ширину линии для операций обводки.
setLineCap(int $style): static
Установить стиль окончания линии: 0 (butt), 1 (round), 2 (square).
setLineJoin(int $style): static
Установить стиль соединения линий: 0 (miter), 1 (round), 2 (bevel).

HasTransforms

Методы для трансформаций системы координат (сохраняются как стек).

startTransform(): static
Сохранить текущее графическое состояние. Должен быть в паре с stopTransform().
stopTransform(): static
Восстановить ранее сохранённое графическое состояние.
rotate(float $angle, float $x = null, float $y = null): static
Повернуть последующие операции рисования на заданный угол (градусы) вокруг точки (x, y).
scale(float $sx, float $sy, float $x = null, float $y = null): static
Масштабировать последующие операции рисования. 100 = без изменений, 200 = двойной размер.
translate(float $tx, float $ty): static
Сместить последующие операции рисования на (tx, ty) пользовательских единиц.
skew(float $angleX, float $angleY, float $x = null, float $y = null): static
Наклонить последующие операции рисования на заданные углы (градусы).
mirror(string $axis, float $x = null, float $y = null): static
Отзеркалить последующие операции рисования вдоль заданной оси ('H' горизонтальная, 'V' вертикальная).

HasLayout

Методы для колонтитулов, колонок и режима брошюры.

setHeaderCallback(callable $callback): static
Зарегистрировать callback, вызываемый вверху каждой страницы. Получает экземпляр Document.
setFooterCallback(callable $callback): static
Зарегистрировать callback, вызываемый внизу каждой страницы. Получает экземпляр Document.
setColumnsArray(array $columns): static
Определить многоколоночную компоновку. Каждый элемент — ассоциативный массив с ключами 'width' и опциональным 'margin'.
selectColumn(int $column = 0): static
Переместить курсор в указанную колонку (0-индексная).
setBooklet(bool $enable, float $innerMargin = -1, float $outerMargin = -1): static
Включить режим брошюры (прошивка внакидку) с настраиваемыми внутренними и внешними полями.
setPrintHeader(bool $print): static
Включить или отключить верхний колонтитул на последующих страницах.
setPrintFooter(bool $print): static
Включить или отключить нижний колонтитул на последующих страницах.

HasNavigation

Методы для закладок, оглавления, ссылок, аннотаций и файловых вложений.

bookmark(string $title, int $level = 0, float $y = -1, int $page = 0, string $style = '', Color $color = null): static
Добавить закладку (запись оглавления). Уровень 0 — верхний; большие значения создают вложенные дочерние элементы.
addTOC(int $page = 0, string $numberFormat = '', string $filler = '.'): static
Сгенерировать оглавление из всех закладок и вставить его на заданную страницу.
addLink(): int
Создать внутреннюю ссылку и вернуть её идентификатор.
setLink(int $linkId, float $y = 0, int $page = -1): static
Установить назначение для ранее созданной внутренней ссылки.
annotation(float $x, float $y, float $w, float $h, string $text, array $options = []): static
Добавить текстовую аннотацию в заданном прямоугольнике.
addFileAttachment(string $filePath, string $description = '', string $name = ''): static
Прикрепить файл к документу. Поддерживает ассоциированные файлы PDF/A-3.

HasInteractive

Методы для полей форм AcroForm и JavaScript.

textField(string $name, float $x, float $y, float $w, float $h, array $options = []): static
Добавить текстовое поле ввода в заданной позиции.
checkboxField(string $name, float $x, float $y, float $size = 10, bool $checked = false): static
Добавить поле чекбокса.
radioField(string $name, float $x, float $y, float $size = 10, array $options = []): static
Добавить поле радиокнопки как часть именованной группы.
listboxField(string $name, float $x, float $y, float $w, float $h, array $items, array $options = []): static
Добавить поле списка с возможностью выбора.
comboboxField(string $name, float $x, float $y, float $w, float $h, array $items, array $options = []): static
Добавить выпадающий список.
buttonField(string $name, float $x, float $y, float $w, float $h, string $caption, string $action = ''): static
Добавить кнопку с опциональным JavaScript-действием.
includeJS(string $script): static
Встроить JavaScript-действие на уровне документа. Выполняется при открытии документа.

HasSecurity

Методы для шифрования и цифровых подписей.

setProtection(array $permissions = [], string $userPassword = '', string $ownerPassword = '', int $mode = 3): static
Зашифровать документ с помощью AES-256 (mode 3). Разрешения: 'print', 'copy', 'modify', 'annot-forms' и др.
setSignature(string $certFile, string $privateKeyFile, string $password = '', string $extracertsFile = '', int $certType = 2, array $info = []): static
Применить цифровую подпись PAdES. Используйте certType 2 для файлов PKCS#12 (.p12/.pfx).

HasOutput

Методы для рендеринга финального PDF.

save(string $path): bool
Записать PDF в файл. Возвращает true в случае успеха.
output(OutputDestination $destination = OutputDestination::String, string $filename = 'doc.pdf', string $path = ''): string|bool
Отрендерить PDF в выбранное назначение: String (вернуть бинарные данные), File, Inline (браузер) или Download.
toString(): string
Удобный алиас для output(OutputDestination::String). Возвращает сырые бинарные данные PDF.

См. также

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