Графика (HasDrawing)
Trait HasDrawing предоставляет примитивы векторного рисования для линий, прямоугольников, окружностей, многоугольников, кривых, стрелок и секторов. Все методы возвращают static, поэтому каждый вызов может быть объединён в цепочку.
Краткий справочник
| Метод | Фигура |
|---|---|
line() | Прямая линия между двумя точками |
rect() | Прямоугольник |
roundedRect() | Прямоугольник со скруглёнными углами |
circle() | Окружность |
ellipse() | Эллипс |
polygon() | Произвольный многоугольник из массива точек |
regularPolygon() | Правильный многоугольник (n сторон) |
starPolygon() | Звезда |
arrow() | Стрелка с наконечником |
pieSector() | Круговой сектор для диаграмм |
curve() | Кубическая кривая Безье |
polyCurve() | Многосегментная кривая Безье |
Базовый пример
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setDrawColor(255, 0, 0)
->setFillColor(200, 220, 255)
->line(10, 10, 100, 10)
->rect(10, 20, 80, 40, 'DF')
->roundedRect(10, 70, 80, 40, 5, 'DF')
->circle(150, 40, 30, 'DF')
->ellipse(150, 100, 40, 20, 'DF')
->arrow(10, 140, 100, 140)
->regularPolygon(150, 160, 25, 6, 'DF')
->starPolygon(50, 200, 25, 5, 3, 'DF');Параметр стиля
Большинство методов рисования принимают строку $style, управляющую рендерингом:
| Значение | Значение |
|---|---|
S | Обводка (только контур) — по умолчанию |
F | Только заливка |
DF или B | Обводка и заливка (оба) |
Линии и прямоугольники
$pdf->line(float $x1, float $y1, float $x2, float $y2);
$pdf->rect(float $x, float $y, float $w, float $h, string $style = '');
$pdf->roundedRect(float $x, float $y, float $w, float $h, float $r, string $style = '');line() рисует от точки (x1, y1) до (x2, y2). rect() рисует стандартный прямоугольник. roundedRect() добавляет скруглённые углы с радиусом $r.
Окружности и эллипсы
$pdf->circle(float $x0, float $y0, float $r, string $style = '');
$pdf->ellipse(float $x0, float $y0, float $rx, float $ry, string $style = '');circle() принимает центральную точку и радиус. ellipse() использует раздельные горизонтальный и вертикальный радиусы.
Многоугольники
$pdf->polygon(array $points, string $style = '');
$pdf->regularPolygon(float $x0, float $y0, float $r, int $ns, string $style = '');
$pdf->starPolygon(float $x0, float $y0, float $r, int $nv, int $ng, string $style = '');polygon() принимает плоский массив координат [x1, y1, x2, y2, ...]. regularPolygon() рисует правильный n-угольник, вписанный в окружность радиуса $r. starPolygon() рисует звезду с $nv вершинами и коэффициентом пропуска $ng.
Стрелки и круговые секторы
$pdf->arrow(float $x0, float $y0, float $x1, float $y1);
$pdf->pieSector(float $xc, float $yc, float $r, float $a, float $b, string $style = '');arrow() рисует линию с наконечником стрелки в конечной точке. pieSector() рисует круговой сектор от угла $a до $b (в градусах), полезно для диаграмм:
$pdf->setFillColor(255, 100, 100)->pieSector(100, 100, 40, 0, 120, 'F')
->setFillColor(100, 255, 100)->pieSector(100, 100, 40, 120, 250, 'F')
->setFillColor(100, 100, 255)->pieSector(100, 100, 40, 250, 360, 'F');Кривые Безье
$pdf->curve(float $x0, float $y0, float $x1, float $y1, float $x2, float $y2, float $x3, float $y3);
$pdf->polyCurve(array $points);curve() рисует кубическую кривую Безье от (x0, y0) до (x3, y3) с контрольными точками (x1, y1) и (x2, y2). polyCurve() соединяет несколько сегментов Безье из массива точек.
Стили линий
$pdf->setLineStyle(array $style);Массив $style поддерживает ключи: width (float), cap (butt, round, square), join (miter, round, bevel), dash (строка или массив паттерна) и color (массив RGB).
$pdf->setLineStyle([
'width' => 0.5,
'cap' => 'round',
'join' => 'round',
'dash' => '3,2',
'color' => [0, 0, 200],
])->line(10, 10, 190, 10);Метки обрезки и приводки
Добавьте метки для профессионального печатного вывода:
$pdf->cropMark(20, 20, 10, 10)
->registrationMark(105, 10)
->colorRegistrationBar(20, 280, 170, 5);