fpdf中文亂碼,添加字符集

中文亂碼

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

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

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

框架

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

PS:若是使用YII框架,可能會出現獲取不到GB_widths的狀況,將$GB_widths放入函數體內便可函數

添加字符集

自帶的字體確定知足不了需求,怎麼自定義呢:
一、字體格式轉換程序(TTF2PT1)
二、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文件,輸入如下代碼:ui

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

運行該文件,生成了兩個文件:simhei.php和simhei.z就能夠,刪掉simhei.ttf,製做字體的任務就完成了,若是想製做多個字體,繼續用這個方法code

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,就能夠了ip

相關文章
相關標籤/搜索