2012-03-25 46 views
2

我一直在試圖產生與在其中心的文字形狀,沿着線:文本爲中心的形狀

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

但產量是完全錯誤的,在一個完全不同的位置文本位置到橢圓。任何人都可以提出一個很好的方法來將形狀和測試集中到同一位置嗎?

回答

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