Текстовая форма в PDF - PullRequest
       3

Текстовая форма в PDF

2 голосов
/ 25 марта 2012

Я пытался сгенерировать фигуры с текстом в центре, по линиям:

$pdf->Text(25, 100, 'Name', false, false, true, 0, 0, 'C');
$pdf->Ellipse(25, 100, 20, 10);

Но вывод совершенно неверный, с позициями текста в совершенно другом месте, чем в эллипсе.Кто-нибудь может предложить хороший подход к центрированию формы и теста в одном месте?

1 Ответ

0 голосов
/ 26 марта 2012
$pdf->Text(25, 100, 'Name', false, false, true, 0, 0, 'C');

Text на самом деле является оберткой для Cell, временно изменяющей параметры отображения текста и перемещающейся к указанным координатам перед вызовом.Фактически существует три параметра выравнивания для Text и / или Cell.$align (в вопросе установлено значение 'C') устанавливает горизонтальное выравнивание текста в ячейке, но не меняет начальную позицию ячейки.Проблема в том, что Cell вызывается с шириной 0, которая расширяет ячейку до правого поля.Центрирование текста, таким образом, перемещает текст от предполагаемого местоположения.$calign устанавливает вертикальное выравнивание ячейки относительно заданного положения x, y, а $valign устанавливает вертикальное выравнивание текста внутри ячейки.

Один из способов получить центрированный текст - вызвать Cell и создайте прямоугольник с известными размерами (например, совпадающими с размерами фигуры), расположенными так, чтобы соответствовать центру фигуры, и центрируйте текст внутри ячейки с помощью $align и $valign.Например:

$cx = 50;
$cy = 100;
$rx = 20;
$ry = 10;
$pdf->SetXY($cx-$rx, $cy-$ry);
$pdf->Cell(2*$rx, 2*$ry, 'Name', null, null, 'C', null, null, null, null, 'T', 'C');
$pdf->Ellipse($cx, $cy, $rx, $ry);
...