tcpdf 是一套在php上很完整與活躍的開放原始碼程式,用於產生pdf函式庫,當要和codeIgniter搭配時好像沒那麼容易,需要有一個可直接連接的網址,官方wiki上有人寫了一個連接器,做了完整的接合,與設定的說明,
http://codeigniter.com/wiki/TCPDF-CodeIgniter_Integration/
但是裝上去以後發生了這個錯誤訊息,
Use of undefined constant K_CELL_HEIGHT_RATIO – assumed ‘K_CELL_HEIGHT_RATIO’
後來在這篇看到解決方案,http://codeigniter.com/forums/viewthread/133243/#661005,
主要是這這回覆提出的,
I’ve seen this problem too, and I adjusted the tcpdf.php file around line 948 (version 4.6.013):
protected $cell_height_ratio = 1.25; //K_CELL_HEIGHT_RATIO;
So I just hardcoded the value 1.25 – got the value from tcpdf_config.php.
仔細追蹤後發現,為什麼會出現這個問題呢?
因為聯接器裡面主要在做的事就是重新定義他的config檔,放在codeIgniter的configs資料夾下,然後透過lib內的檔案將參數讀進來並設定初始化,在某個的tcpdf版本下可能可行,在5.3版下就發生了這個錯誤訊息,主要是因為常數集的定義順序,被這一行給破壞了,
protected $cell_height_ratio = K_CELL_HEIGHT_RATIO;
他寫在不是建構子的地方,所以定義常數時來不及在這個常數使用之前,所以我決定不改變原始程式碼,在lib內物件繼承上方寫上 define(‘K_CELL_HEIGHT_RATIO’, 1.25); 在較不破壞的情況下解決這個問題。