PDF中以文本为中心的形状


Text-centred shape in PDF

我一直在尝试生成以文本为中心的形状,如下所示:

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

但是输出是完全错误的,文本的位置与椭圆完全不同。有人能提出一个好的方法来让形状和测试集中在同一个位置吗?

$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);