2012-09-26 214 views
5

在FPDF中,我有一個寬度爲176mm的單元格,我需要放置一個客戶端名稱。問題是客戶端名稱不會始終調整爲固定寬度。有沒有辦法讓單元格的字體大小自動調整到單元格寬度,以防過長?調整字體大小FPDF

這是我現在所擁有的代碼:

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

我知道TCPDF有一個方法來設置自動拉伸,但我還沒有發現任何對FPDF。我必須用代碼來完成嗎?

回答

6

嗯,事實證明,有一個叫GetStringWidth接收一個字符串,並返回在milimeters其寬度的功能,所以,我所做的就是:

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

的下降可以分的分數太多了更精細的列調整,如: $ x- = 0.1; 而不是$ x--;