使用PHP開源類別(TCPDF)製作 UTF-8 的PDF報表

最近有PHP專案需要製作報表,決定了輸出使用PDF格式後,便開始尋找解決方案。目前網路上找到的大多是FPDF或是其衍生出來的專案,因為有點急,就直接拿FPDF來做,沒想到是惡夢的開始XD,使用FPDF製作英文內容的FPDF,是沒什麼問題,但如果是中文內容,便問題重重。 繼續閱讀


最近有PHP專案需要製作報表,決定了輸出使用PDF格式後,便開始尋找解決方案。目前網路上找到的大多是FPDF或是其衍生出來的專案,因為有點急,就直接拿FPDF來做,沒想到是惡夢的開始XD,使用FPDF製作英文內容的FPDF,是沒什麼問題,但如果是中文內容,便問題重重。 繼續閱讀
要搞定 PHP+mySQL 常見的中文亂碼或問號顯示的問題,最高原則就是–從頭到尾都編成UTF8。
我自己的經驗就是確認下述四個地方的編碼設定都是UTF8:
Q. 從資料庫讀出的中文出現問號?
如果你進phpmyadmin看資料表內的中文顯示正常,可能是1,3,4你都做了,但2沒做。
Q. 從資料庫讀出的中文及靜態文字都是亂碼?
如果你進phpmyadmin看資料表內的中文顯示正常,可能是1,2,4你都做了,但3沒做。
Q. 從資料庫讀出的中文出現亂碼?網頁靜態文字是正常?
如果你進phpmyadmin看資料表內的中文也是亂碼,那應該是你1沒做,有做2;若你不想做1,就別做2。
如果你進phpmyadmin看資料表內的中文顯示正常,那應該是你3,4沒做。
Q. 從資料庫讀出的中文正常了,但網頁靜態文字是亂碼?
可能是4沒做到。
用phpmyadmin查看mySQL資料庫內的中文顯示亂碼 (資料表編碼可能是預設的latin1_swedish_ci,總之是非utf8語系),通常這種情況,是網頁前台本身沒編好UTF8,就把中文資料以亂碼的方式存入資料表。
這時建議你最好將資料表重建成utf8_unicode編碼,不然日後要用phpmyadmin看資料庫會很痛苦。如果你不打算重建,那在作mysql_select_db之前,就不要加上 mysql_query("SET NAMES ‘UTF8′");,資料庫內的中文資料在網頁顯示應該還是會正常。

i18n 多國語系切換
因為Drupal的設定很繁雜,所以很容易有見樹不見林或迷路的感覺,甚至突然不知道自己現在在設定什麼東西XD,或者不知道設定的意義在哪。本文除了作為筆記之用,也順帶註記一些個人覺得也許有用的說明,希望看倌們能比較容易理解。
預設的Drupal網站,有提供基本的「語系」設定及「語系翻譯」功能,可以讓有權限的使用者進入後台,進行設定網站的語系(新增語系、設定本站預設語系…等),另外也可以匯入/匯出特定語系的翻譯檔,或針對未翻譯完整的語系進行翻譯。預設的語系功能,都是躲在後台玩的,如果要讓一般訪客都能在前台切換語系呢?安裝及設定相關模組就能達成。 繼續閱讀
Drupal 7樣版都具備兩個新的標準變數:$title_prefix 及 $title_suffix。
這兩個變數內放的是想要被呈現在個別的標題前或後的輸出內容,可作為contextual links之用,像是讓具有某種權限的使用者可以看到一些特別的連結出現在標題上面或下面。
現在不需要像使用Drupal 6的$content時,要先做處理才能分隔$content的輸出。在Drupal 7使用 print render($content) 等同於在 Drupal 6的 print $content,不過當您想輸出部份的內容,像是link,在Drupal 7可以用 print render(content['links'])取得。
使用方式可以參考一下 node.tpl.php內的程式碼: 繼續閱讀
Drupal 7預計將在今年中發佈正式版,在版型開發上有什麼不同之處需要注意的呢?
一直以來新版的Drupal發佈後,舊版的模組(module) 都無法向下相容於舊版的Drupal (指主要版號發佈),這樣的情況也同樣發生在版型上,即是指舊的版型要經過修正才能套用至新版Drupal。針對此情況,Drupal.org提出了一份「Drupal 6轉換到Drupal 7的變更清單」,這份清單目前有49個項目,但實際上這些項目存在著一些待修正的部份,另外也有尚未列入清單的項目正在討論中 (講白一點就是這份清單有一點點過時XD)。但無論如何,這份清單還是能給Drupal 6的版型師(Themer)很不錯的參考,並決定思考如何升級版型去支援Drupal 7。
有一點可以確定的是,比起 Drupal 6,Drupal 7的模型開發比較複雜一點點,但這不表示比較難學習。我想合理的複雜化,是為了更容易理解及擴充。複雜的原因可能在於,Drupal 7 想盡辦法的將版型解構成合理的項目,並且另方面還要維持概念上的一致性,如此Drupal 6的版型師在轉換上才不會太痛苦。
我們先從Drupal 7的版型架構來看看有什麼新玩意。

drupal 7 版型架構 (pingv.com)

Drupal
Drupal 是什麼?
Drupal是一個PHP based的內容管理系統(CMS)開發框架(framework,也有人稱它是一種平台),但其實安裝Drupal之後,也會得到一個只有「半成品」程度的CMS,需要管理者「用力的」客製化後才能見到比較漂亮及完整的成品。因為Drupal也算是個CMS,因此常常被拿來跟Joomla、WordPress、Plone等CMS相比較,當然Joomla及WordPress安裝完後也需要User客製化一番,只是Drupal想要變的把戲比較多,所以比較麻煩一點,所以沒辦法定型的發展成針對某種應用的CMS,所以大部份新手使用Drupal的感覺是-Drupal很陽春或者很醜,至少不像Joomla,安裝完就有個漂亮的網站及後台。 繼續閱讀
上回我們談到Pods後台能設定pods,templates,pages,就好比MVC架構的三個特性。在pods頁面,我們先選state這個pod來看一下設定畫面:

左上角的name是預設的第一個欄位,每個pods都會有一個name。而下一個欄位abbrev就是自訂出來的,所以這個pod有兩個欄位。如果需要自訂pod,就新增一個,再看自己需要什麼樣的欄位,一一設定進去就行了。設定好pod的欄位,就能到後台選單裡的Pods發現多了一個 Add xxx的選項,以state來說就是Add state,這邊就能新增pod的內容,而wp後台pods選單還有browse content選項,可以看到所有設定好的pod及其內容。 繼續閱讀

Wordpress是一款開放原始碼(open source)的部落格架站軟體,自從2003年問世後,就逐漸成為自架部落格的指標性軟體。也因為它開放性的外掛(Plug-in)機制,讓許多國內外的好手都加入撰寫外掛行列,成千上萬的外掛給了Wordpress無限的想像空間。 繼續閱讀