如何用PHP產生UTF-8編碼的繁簡體中文PDF文件

2007-09-06

Permalink 22:14:26, 類別: 雜七雜八  

如何用PHP產生UTF-8編碼的繁簡體中文PDF文件

根據李果正的文章

其實,PDF 並不是一種 document format,而是一種 page [layout] format。

因此,pdf不會發生像html文件在不同的瀏覽器上有不同的排版效果。採用pdf可以確保打印出來的效果不會變樣。

pdf如何確保在每一台電腦上看到的排版效果都一樣呢? 難道在每一份pdf文件裏包進自己的字型? 是的,這的確是目前普遍的作法,因此一份pdf文件變的很大,就是因為它包了中文字型進去。但卻是個浪費空間的作法。

另一種作法就是讓閱讀器安裝字型,pdf文件本身不帶字型。但是問題又來了,那就是漏字問題。一份以utf-8編碼的簡體中文pdf文件,在繁體中文閱讀器上有些字會出現漏字現象。這說明pdf在編碼和字型處理上有自己的一套,並不是按照作業系統utf-8編碼的繁簡中文共用一套字型。因此,如果要閱讀utf-8編碼的繁簡中文pdf文件,必須安裝兩套中文字型。有點囉嗦。

下載字型套件:http://www.adobe.com/tw/products/acrobat/acrrasianfontpack.html

要用PHP產生utf8編碼的中文pdf文件可以參考這個網頁後半段的討論,下載chinese-unicode.php這個類。這樣寫:

require(’chinese-unicode.php’);

$pdf=new PDF_Unicode();

$pdf->Open();
$pdf->AddPage();

$pdf->AddUniGBhwFont(’uni’);
$pdf->SetFont(’uni’,'’,20);

$pdf->Write(10, “简体没问题,繁體也沒問題!");

$pdf->Output();

建議使用AddUniGBhwFont()而不要用AddUniCNShwFont()。因為簡體字型裏包含了繁體字型,用AddUniGBhwFont()產生繁體中文內容的pdf文件也不會有問題。如果用AddUniCNShwFont()產生簡體中文內容的pdf文件,雖然閱讀器安裝了簡體字型,但是閱讀器會把它當成繁體文件,而使用繁體字型顯示,造成一些簡體字顯示不出來。

Pingbacks:

此文章還沒有 Pingbacks

Comments are not allowed from anonymous visitors.

Henry's Blog

Blog = Function 分享( 記錄( 學習() ) );

搜尋

文章彙整

其他

XML Feeds

What is this?

powered by
b2evolution