2012-03-25 3 views
2

J'ai essayé de générer des formes avec du texte dans leurs centres, le long des lignes de:forme centrée Texte en PDF

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

Mais la sortie est complètement faux, avec les positions de texte dans un endroit complètement différent à l'ellipse. Quelqu'un peut-il suggérer une bonne approche pour obtenir la forme et le test centré au même endroit?

Répondre

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

Text est en fait un emballage à Cell, modifier temporairement les paramètres de rendu du texte et le déplacement aux coordonnées indiquées avant de l'appeler. Il y a en fait trois paramètres d'alignement à Text et/ou Cell. $align (défini sur 'C' dans la question) définit l'alignement horizontal du texte dans la cellule, mais ne change pas la position de départ de la cellule. Le problème avec ceci est que Cell est appelé avec la largeur 0, qui étend la cellule à la marge droite. Centrer le texte éloigne donc le texte de l'emplacement prévu. $calign définit l'alignement vertical de la cellule par rapport à l'emplacement x, y donné, et $valign définit l'alignement vertical du texte dans la cellule. Une façon d'obtenir du texte centré est d'appeler directement Cell et de créer une boîte de dimensions connues (par exemple, en faisant correspondre les dimensions de la forme), positionnée pour correspondre au centre de la forme, et centrer le texte dans la cellule avec $align et $valign. Par exemple:

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