我一直在尝试在其中心生成带有文本的形状,如下所示:
$pdf->Text(25, 100, 'Name', false, false, true, 0, 0, 'C');
$pdf->Ellipse(25, 100, 20, 10);
但输出完全错误,文本位置与椭圆完全不同。任何人都可以建议一个好的方法来将形状和测试集中在同一个位置吗?
答案 0 :(得分:0)
$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);