想要在 PHP 中創(chuàng)建 PDF 文件并支持中文的話,fpdf 應(yīng)該是個(gè)不錯(cuò)的選擇。fpdf 是一個(gè)開源的 PHP 類庫(kù),可以生成各種 PDF 文件,而且在支持 ASCII 字符下,可以使用中文。
在使用 fpdf 輸出中文時(shí),可以使用 TCPDF 類庫(kù)或者 FPDF + utf8_decode 函數(shù)的組合。
使用 TCPDF:
require_once('include/tcpdf/tcpdf.php'); $pdf = new TCPDF(); $pdf->AddPage(); $pdf->SetFont('kozgopromedium', '', 16); //設(shè)置字體 $pdf->Write(0, '中文內(nèi)容'); $pdf->Output(); //輸出 PDF 文件
使用 FPDF:
require ('fpdf.php'); $pdf=new FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial','',10); $pdf->Write(5,utf8_decode('中文內(nèi)容'));//注意這里借用了 utf8_decode 函數(shù) $pdf->Output();
需要注意的是,中文字符在 PDF 中占用的寬度與 ASCII 字符并不相等。因此,需要注意計(jì)算寬度和調(diào)整字體大小的方法。
比如,可以使用 FPDF 中的 GetStringWidth 函數(shù)來(lái)獲取字體在 PDF 中的寬度。
require ('fpdf.php'); $pdf=new FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial','',10); $str = '中文字符'; $width = $pdf->GetStringWidth($str); $pdf->Write(5,$str); $pdf->Cell($width,0,'',1); //在字符下方繪制一個(gè)寬度和高度都為 0 的矩形框 $pdf->Output();
此外,還可以使用 TCPDF 中的 AutoSplitChineseString 函數(shù)來(lái)自動(dòng)拆分含有中文字符的字符串,并在換行時(shí)自動(dòng)分頁(yè)等。
require_once('include/tcpdf/tcpdf.php'); $pdf = new TCPDF(); $pdf->AddPage(); $pdf->SetFont('kozgopromedium', '', 16); $str = '中文字符'; $pdf->startTransaction(); //開啟事務(wù) $lines = $pdf->AutoSplitChineseString($str,30); //拆分字符串 foreach($lines as $line){ $pdf->Write(0, $line, '', 0, 'L', true, 0, false, false, 0); } $pdf->commitTransaction(); //提交事務(wù) $pdf->Output();
總之,無(wú)論使用哪種方法,都需要注意中文字符在 PDF 中的寬度與 ASCII 字符不同,需要注意計(jì)算寬度和調(diào)整字體大小的方法。使用 AutoSplitChineseString 函數(shù)可以方便地自動(dòng)拆分含有中文字符的字符串,并在換行時(shí)自動(dòng)分頁(yè)等。希望這篇文章對(duì)你有所幫助!