2012-09-26 24 views
5

W FPDF mam komórkę o szerokości 176 mm, w której muszę umieścić nazwę klienta. Problem polega na tym, że nazwa klienta nie zawsze dostosowuje się do tej stałej szerokości. Czy istnieje sposób na automatyczne dostosowanie rozmiaru czcionki komórki do szerokości komórki, na wypadek gdyby była zbyt długa?Dostosuj rozmiar czcionki FPDF

Jest to kod, który mam teraz:

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

wiem, że TCPDF ma sposób, aby ustawić automatyczne rozciągnięcie ale nie znalazłem żadnych dla FPDF. Czy muszę to zrobić za pomocą kodu?

Odpowiedz

6

Cóż, okazuje się, że istnieje funkcja o nazwie GetStringWidth która odbiera ciąg i zwraca jego szerokość w milimetrach, więc to, co zrobiłem, było:

/* 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

Spadek może być ułamki punktów też dla dokładniejsze ustawienia kolumn, takie jak: $ x- = 0,1; zamiast $ x--;