2012-09-26 9 views
5

In FPDF habe ich eine Zelle mit einer Breite von 176mm, wo ich einen Kundennamen eingeben muss. Das Problem ist, dass sich der Clientname nicht immer an diese feste Breite anpasst. Gibt es eine Möglichkeit, die Schriftgröße der Zelle automatisch auf die Zellenbreite anzupassen, falls sie zu lang ist?Schriftgröße anpassen FPDF

Dies ist der Code, den ich jetzt haben:

$pdf->Cell(116, 7, utf8_decode($row_or[ 'client_name' ]), 0, 0, 'L'); 

Ich weiß, dass TCPDF eine Möglichkeit, die Auto-Strecke eingestellt hat, aber ich habe nicht für FPDF gefunden. Muss ich es mit Code machen?

Antwort

6

Nun, es stellt sich heraus, dass es eine Funktion GetStringWidth genannt, die einen String und gibt in milimeters seine Breite erhält, so ist, was ich tat, war:

/* I know that the font size starts with 11, so i set a variable at this size */ 
$x = 11; // Will hold the font size 
/* I will cycle decreasing the font size until it's width is lower than the max width */ 
while($pdf->GetStringWidth(utf8_decode($row_or[ 'client_name' ])) > 116){ 
    $x--; // Decrease the variable which holds the font size 
    $pdf->SetFont('Trebuchet', 'B', $x); // Set the new font size 
} 
/* Output the string at the required font size */ 
$pdf->Cell(116, 7, utf8_decode($row_or[ 'client_name' ])), 0, 0, 'L'); 
/* Return the font size to itś original */ 
$pdf->SetFont('Trebuchet', 'B', 11); 
0

Die Abnahme kann Fraktionen von Punkten sein, feinere Spaltenanpassung, wie: $ x- = 0.1; anstelle von $ x--;