fpdf中文亂碼,添加字符集


中文亂碼

引入Olivier的chinese.php(點擊下載)

支持中文,其中有Big5,GB兩種
使用方法也很簡單

$pdf->AddBig5Font(); 
$pdf->SetFont('Big5','',20)

$pdf->AddGBFont(); 
$pdf->SetFont('GB','',20); 

PS:如果使用YII框架,可能會出現獲取不到GB_widths的情況,將$GB_widths放入函數體內即可

添加字符集

自帶的字體肯定滿足不了需求,怎么自定義呢:
1、字體格式轉換程序(TTF2PT1)
2、TTF2PT1中文支持包
  將TTF2PT1解壓到某個文件夾,這里設定為“C:\ttf2pt1”。將中文支持包中的ugb.map或ugbk.map復制到該文件夾。
  將你想轉換的字體從WINDOWS的FONTS文件夾中復制出來,這里處理黑體,復制的就是“simhei.ttf”,也復制到上面那個文件夾 中。這樣你的“C:\ttf2pt1”文件夾中應該有以下幾個文件:ttf2pt1.exe、ugbk.map、simhei.ttf。
  運行:

  C:\ttf2pt1\ttf2pt1.exe –a –L ugbk.map+a1 simhei.ttf simhei

  運行過程有點長,完成后會在“C:\ttf2pt1”文件夾內生成兩個文件:simhei.afm和simhei.t1a,把 simhei.afm和simhei.ttf復制到你的FPDF類安裝文件夾下的font內,並在該文件夾內新建一個PHP文件,輸入以下代碼:

<?php     
require('./makefont/makefont.php');     
MakeFont('./simhei.ttf', './simhei.afm');     

運行該文件,生成了兩個文件:simhei.php和simhei.z就可以,刪掉simhei.ttf,制作字體的任務就完成了,如果想制作多個字體,繼續用這個方法

include('fpdf/chinese.php');     
    
$pdf=new PDF_Chinese();     
$pdf->AddGBFont('simhei','黑體');     
$pdf->AddGBFont('simkai','楷體_GB2312');     
$pdf->Open();     
$pdf->AddPage();     
    
$pdf->SetFont('simhei','',20);     
$pdf->SetXY(15,24);     
$pdf->Write(10,'顯示黑體字');     
    
$pdf->SetFont('simkai','',20);     
$pdf->SetXY(15,54);     
$pdf->Write(10,'顯示楷體字');       
$pdf->Output();

PS:用瀏覽器看一下,黑體出來了吧?不過效果似乎不太讓人滿意,中文沒問題,英文數字,間距出問題。
具體原因在於chinese.php文件里,有個變量叫$GB_widths,定義英文字符寬度的,把所有英文、字符寬度全部改成了480,就可以了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM