中文亂碼
引入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,就可以了
