下載 TCPDF

之前我們提及 Joomla! 1.5.7 提供的 TCPDF v2.5.000 並沒有選項不嵌入完整的字體檔案。幸運的是新版的 TCPDF 有這個選項。因此我們的計畫基本上是將 Joomla! 內的 TCPDF 用最新版來取代。

請前往官方 TCPDF 網站來下載最新版本。將它解壓縮到你的電腦硬碟裏。你會看到一個目錄名稱為 tcpdf 被建立,裏面含有 TCPDF 的程式碼。

建造字體腳本程式

雖然我們不要 TCPDF 把整個字體檔案放入 PDF 內,我們仍然必須讓它包含一些字體的資訊。你需要執行在 TCPDF 軟體包裏的兩件工具以產生一個含有字體重要資料的 PHP 腳本程式。

為了要使中文 PDF 能被 Adobe Acrobat 正常顯示且不用實際嵌入字體檔案,所用的字體必須已經是 Acrobat 安裝一部份。如果你檢查 Acrobat 安裝目錄下的 Resource\CIDFont 檔案夾,你會發現幾個給亞洲語言使用的字體。對於正體中文 Adobe Acrobat 提供了 AdobeMingStd-Light.otf,那是我們要使用的字體。(我們假設你自身使用的機器是一部視窗電腦,因為其中一個你必須使用的指令是 DOS 的程式。)

現在請進入含有 TCPDF 程式碼之 tcpdf 檔案夾內的 fonts\utils。將字型檔 AdobeMingStd-Light.otf 複製到這個檔案夾,並將它改名為 adobemingstd-light.otf。開啟一個 DOS 指令視窗,執行下面的指令以產生字體資料檔案。

D:\tcpdf\fonts\utils> ttf2ufm -a -F adobemingstd-light.otf

這指令會花一點時間來執行。等它完成後,你應該會在同樣的目錄下看到多出三個檔案,它們的延伸檔名會分別是 .afm、.t1a 與 .ufm。

接下來你必須執行一個 PHP 腳本程式 makefont.php。(你需要有 PHP 安裝在你的視窗機器上,或者你也可以將那三個剛建造的檔案複製到你的伺服器上,然後在伺服器上執行下面的指令。)

D:\tcpdf\fonts\utils> php -q makefont.php adobemingstd-light.otf adobemingstd-light.ufm false

這會製作出一個有 .z 延伸檔名的壓縮檔及一個 PHP 腳本程式叫做 adobemingstd-light.php,這是 TCPDF 產生 PDF 時需要用到的檔案。但在這個 PHP 腳本程式能被使用之前,還需經過一些修改。請用你慣用的文字編輯器開啟 adobemingstd-light.php,做以下的改變:

  • 改變字體型式成為:$type='cidfont0';
  • 增加這行以設定預設的字型寬度:$dw=1000;
  • 移除 $enc、$file 和 $ctg 變數的定義
  • 於檔案的最後加入下面這段文字:
    // Chinese Traditional
    $enc='UniCNS-UTF16-H';
    $cidinfo=array('Registry'=>'Adobe', 'Ordering'=>'CNS1','Supplement'=>0);
    include(dirname(__FILE__).'/uni2cid_ac15.php');

要知道如何針對其他亞洲語言做修改,請參考TCPDF 官方網站上的文件

FaLang translation system by Faboba