2012-03-25 12 views
2

ich versucht habe, Formen mit Text in ihren Zentren zu erzeugen, entlang der Linien von:Text-zentrierte Form in PDF

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

Aber der Ausgang ist völlig falsch, mit den Textpositionen in einer ganz anderen Lage zur Ellipse. Kann jemand einen guten Ansatz vorschlagen, um die Form und den Test auf den gleichen Ort zu zentrieren?

Antwort

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

Text ist eigentlich ein Wrapper Cell, vorübergehend die Text-Rendering-Parameter zu ändern und zu den angegebenen Koordinaten zu bewegen, bevor sie aufgerufen wird. Es gibt tatsächlich drei Ausrichtungsparameter zu und/oder Cell. $align (in der Frage auf 'C' gesetzt) ​​legt die horizontale Ausrichtung des Textes in der Zelle fest, ändert jedoch nicht die Anfangsposition der Zelle. Das Problem dabei ist, dass Zelle mit der Breite 0 aufgerufen wird, die die Zelle auf den rechten Rand erweitert. Wenn Sie den Text zentrieren, wird der Text somit vom beabsichtigten Ort entfernt. $calign legt die vertikale Ausrichtung der Zelle relativ zur angegebenen x, y-Position fest, und $valign legt die vertikale Ausrichtung des Texts innerhalb der Zelle fest.

Eine Möglichkeit, Text zentriert zu bekommen, ist Cell direkt anrufen und eine Schachtel mit bekannten Abmessungen (zum Beispiel der Abmessungen der Formschluss) zu schaffen, positioniert, um die Mitte der Form zu entsprechen, und in der Mitte der Text innerhalb der Zelle mit $align und $valign. Zum Beispiel:

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