2012-09-26 37 views
5

Trong FPDF, tôi có ô có chiều rộng 176mm, nơi tôi cần đặt tên khách hàng. Vấn đề là tên khách hàng không luôn điều chỉnh theo chiều rộng cố định đó. Có cách nào để làm cho kích thước phông chữ của ô tự động điều chỉnh theo chiều rộng ô trong trường hợp nó quá dài không?Điều chỉnh cỡ chữ FPDF

Đây là mã mà tôi có ngay bây giờ:

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

Tôi biết TCPDF rằng có một cách để thiết lập các tính năng tự động căng nhưng tôi đã không tìm thấy bất kỳ cho FPDF. Tôi có phải làm điều đó với mã không?

Trả lời

6

Vâng, nó quay ra rằng có một chức năng gọi là GetStringWidth mà nhận được một chuỗi và trả về của nó rộng trong milimeters, vì vậy, những gì tôi đã làm là:

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

Sự giảm có thể phân số điểm quá cho điều chỉnh cột mịn hơn, như: $ x- = 0,1; thay vì $ x--;

Các vấn đề liên quan