VtigerCRM Part Two 修改篇
話說上次我裝完VtigerCRM之後,很開心!
但開心沒多久我就發現,真的要上線使用還是有一段距離。
基本上問題都是與中文脫不了關係,很多時候用OpenSource的
軟體,中文真的是一個很頭痛的問題!
以VtigerCRM來說問題大致上有以下幾點
1. WebMail無法正確顯示中文
2. 圖表中文字無法正確顯示
3. 各模組轉存pdf時的中文亂碼或無法顯示
問題大致就以上三點,再來還有修改pdf的layout來符合自己的需求
接下來就一步一步來修正吧!
Q1:
WebMail無法正確顯示中文
A1:
修改
1 | vtigercrm/modules/Webmails/functions.php |
在第一行新增
1 | $charset = 'utf-8'; |
註解以下此行
1 | global $charset; |
完成
Q2:
圖表中文字無法正確顯示
A2:
先下載螢火飛字型
http://www.study-area.org/apt/firefly-font/fireflysung-1.3.0.tar.gz
解壓縮後將 fireflysung.ttf 上傳至 vtigercrm/Image/Canvas/Fonts/ 底下
並在 vtigercrm/Image/Canvas/Fonts/fontmap.txt 中新增
1 | fireflysung,fireflysung.ttf |
修改 include/utils/GraphUtils.php 第27行為
1 | DEFINE("FF_FONT1",'fireflysung'); |
完成
Q3:
各模組轉存pdf時的中文亂碼或無法顯示
A3:
先下載 Tcpdf
http://sourceforge.net/project/showfiles.php?group_id=128076
我是在WINDOWS下做轉檔動作的,轉字型程式位置
tcpdf_3_0_004\tcpdf\fonts\ttf2ufm\ttf2ufm.exe
在命令提示字元底下執行
1 | $ ttf2ufm.exe -a -F fireflysung.ttf |
將產生的檔案上傳至
/var/www/html/vtigercrm/include/tcpdf/fonts/ttf2ufm
並在伺服器上執行以下命令
1 2 3 | cd /var/www/html/vtigercrm/include/tcpdf/fonts/ttf2ufm php -q makefontuni.php fireflysung.ttf fireflysung.ufm |
複製.php, .z and ctg.z 到
/var/www/html/vtigercrm/include/tcpdf/fonts/
修改 vtigercrm/include/tcpdf 底下的 pdf.php tcpdf.php
將 $this->SetFont 後面的字型名稱改為 fireflysung
到此已經可以轉出中文了,除了檔案很大這個問題,我沒辦法解決
如果有發現字出不來的,基本上應該是中文翻譯檔的問題
也就是沒有相對應的中文翻譯詞彙!
以 Quotes module 為例子,他的語言檔放在
vtigercrm/modules/Quotes/language/zh-tw.lang.php
然後我們看 vtigercrm/modules/Quotes/CreatePDF.php
以185行為例
$product_line[$j]["Product Name"] = $list_price[$i];
我們需要在 zh-tw.lang.php 中新增一行如下
1 | 'Product Name' => '產品名稱', |
中文記得要用utf-8編碼喔!
完成
最後如果想要修改pdf的layout的話,以下有一些我修改的過程給大家參考
修改BODY圓角
vtigercrm/include/tcpdf/pdf.php
第179行
1 | $this->RoundedRect($r1, $y1, ($r2 - $r1), $y2, 1(2.5,4.5), 'D'); //調整後面的數值 |
檔案位置
header
modules/Quotes/pdf_templates/header.php
body
include/tcpdf/templates/body.php
footer
modules/Quotes/pdf_templates/footer.php
關閉最後一頁(endpage)
vtigercrm/modules/Quotes/CreatePDF.php
第25行
1 | $endpage="0"; //1開 0關 |
最後我放我的pdf圖片上來,希望大家VtigerCRM都可以使用愉快喔!
下篇在po增加Project模組的,或是大家也可以上VtigerCRM的Blog去找喔!
塗塗抹抹有點難看,請大家見諒囉!

我的問題是在webmail的首頁,點選mail,標題都ok, 但是內文只能秀英文。
由於是測試site;方便幫我看一下嗎?
http://www.yesippbx.com/vtiger
admin/admin
scott
HELLO~
這應該就是第一個問題!
有試著照上面修改嗎~?
有, 不work
你好!
Q1 & Q2 okay, Q3我已按指示修改 vtigercrm/include/tcpdf 底下的 pdf.php tcpdf.php, 將 $this->SetFont 後面的字型名稱改為 fireflysung。但仍然沒法在pdf顯示中文字樣。可否給多一點提示如何更改pdf.php & tcpdf.php
Beeforce
Hello
pdf改中文的部份
除了字型要轉好以外
pdf.php tcpdf.php 這兩個檔案中的$this->SetFont
變數不只一個喔!每個地方的字型可以不一樣!
也可以向我一樣偷懶啦Search以後通通改fireflysung
呵呵︿︿
Devil你好!
多謝你的指示。我已依照指示及方法重新轉字型,在pdf.php內共轉换18項如下内容:
$this->SetFont(‘fireflysung’,'B’,12);
$this->SetFont(‘fireflysung’,",10);
$this->SetFont( "fireflysung", "B", 15);
$this->SetFont( "fireflysung", "B", 10);
$this->SetFont( "fireflysung", "", 10);
……..
但在tcpdf.php內沒地方可更改,勉強更改
$this->SetFont(", $style); 為
$this->SetFont(‘fireflysung’, $style);
儲存後,依然沒法正確顯示中文。可否給予支援? 或是尚有其它檔案漏改。
Beeforce
嗯嗯~tcpdf.php裡面只有那一行可改沒錯
你看的到 Apache 的 error Log 嗎?
Devil 你好!
我失敗了,雖然我是新手,但依然心有不甘,不願放棄。
我是在XP平台安裝xampp Server的,昨天再按照你發佈的工作心得內兩编文章,重新安裝VtigerCrm 5.0.4及設定tcpdf中文字型。除了Q3的pdf中文依然乱碼外,其餘一切正常。
檢查Error log 得如下字樣
[Wed Jul 09 19:20:24 2008] [error] [client 127.0.0.1] File does not exist: C:/xampp/htdocs/vtigercrm/include/js/zh-tw.lang.js, referer: http://localhost/vtigercrm/index.php?action=DetailView&module=Invoice&record=89&parenttab=Inventory
[Wed Jul 09 19:20:24 2008] [error] [client 127.0.0.1] File does not exist: C:/xampp/htdocs/vtigercrm/jscalendar/lang/calendar-big5-utf8.js, referer: http://localhost/vtigercrm/index.php?action=DetailView&module=Invoice&record=89&parenttab=Inventory
英文pdf沒發生問題,請再給多一點支持!
Beeforce
我遇到的问题和Q3一样~~
请问还有什么档案漏改吗?
好像很多人都失敗囉…..有人成功嗎?
我最近要重做一次!我會在注意一下!
update in file include/tcpdf/tcpdf.php (version 5.0.4)
1.about line 760:
chage from
$this->FontFamily=";
to
$this->FontFamily=’fireflysung’;
2. about line 1746:
chage from
$family=’freeserif’;
to
$family=’fireflysung’;
For this PDF issue, I didn’t update pdf.php/tcpdf.php setFont’s parametres.
大家好!
pdf中文顯示成功了,两頁pdf版面的file size 約7M.
我是依照Devil提供VtigerCrm 修改篇的指示及程序進行修改後,再按照hank的提示完成。多謝大家!
Beeforce
谢谢各位,参照指导已完成PDF转中文,非常感谢!!!!
为什么我按照上面的指导一点都不起作用呢?
折腾好几天了,是不是还有其他地方呢?
终于解决了呵呵,只不过只修改一处就可以
\include\tcpdf\tcpdf.php 1745行:
else
$family=’freeserif’;改为
else
$family=’fireflysung’;
THANKS EVERYONE!
謝謝您分享此方法
q1與q2經測試沒問題
q3連結只能下載tcpdf_4_4_007.zip版本
不知何處還可以下載tcpdf_3_0_004版?
剛剛異想天開,結果發現另一個更快速的方法
1. 將轉好的三個檔案放到舊有的tcpdf\fonts目錄下
2. 修改檔名:
fireflysung.php–>FreeSerif.php(原來的FreeSerif.php要先備份喔)
另外兩個檔案名稱不變
轉出PDF目前看起來OK
但目前公司名稱還是方塊~WHY?
我依前面的資料提示去修改Quotes/language/zh-tw.lang.php,也儲存為UTF-8編碼
但是很奇怪的問題又出現了
例如右上方的報價單、客戶編號、頁次…都是方塊
但是:中間表格的中文又是正確的…難道不是在Quotes/language/zh-tw.lang.php修改?
原本vtiger裡面的tcpdf就可以作轉換的動作了
轉換為ufm似乎與tcpdf版本無關
使用google釋出的DroidSansFallback.ttf檔
目前轉出的pdf為1.9m
我的PDF問題終於解決了
看了一下程式碼,1749行的 elseif(($family=="symbol")
我將symbol也改成freeserif就可以了
請問你的GOOGLE字型有做過以下這個步驟嗎?
php -q makefontuni.php XXXX.ttf XXXX.ufm
請問Q1的問題
您說註解以下此行…..到底要怎麼註解呢?可否說明清楚一點
在Functions.php裡面總共有三行都是global $charset;
我該怎麼弄?
註解我是在那一行前面加雙斜線符號//
我這邊只註解第一個找到的,尚未發現問題
您試看看就知道了,反正先備份原始檔,有問題時再覆蓋回去就好了
Q3的問題
cd /var/www/html/vtigercrm/include/tcpdf/fonts/ttf2ufm
php -q makefontuni.php fireflysung.ttf fireflysung.ufm
這….可以執行嗎?
我使用後,不會產生.PHP,.Z,CTG.Z檔阿
我該怎麼弄?
我用的是windows版本(Appserv2.5.9),使用該語法執行轉換並無問題
內地網站(c3crm)的討論區有人放上了這幾個轉換檔案的下載連結
如果一直無法編譯出這三個檔..可以去找看看
vtigerCRM 能不能夠完全關閉掉特定的模組?
(如 WebMail , Rss 之類的?)
我是用使用者的權限來限定他們能用的功能喔!
感謝您熱心回復耶!
請問crm裏的使用者能不能只看見自己建的客戶,不要看見別人建的客戶呢?
中文pdf檔案肥大解決方法,完成檔大小約20k
不用轉檔及轉字型程式位置,選用fonts內置字體即可。繁體用msungstdlight 簡體用stsongstdlight
1. 先下載tcpdf 4.5.027
http://sourceforge.net/projects/tcpdf/
2. 將整個tcpdf4.5.027內檔全部覆蓋到vtigercrm 中文化的/include/tcpdf內
3. 按照Devil上述提供的方法修改tcpdf.php及pdf.php檔案。記得不是用fireflysung,而是用 msungstdlight.php或stsongstdlight
Beeforce
beeforce 您好
剛剛上去看,已經是tcpdf 4.5.027了,這幾天更新的真快
我已下載,但是否可以提供您修改的行數及語法
是否如下方式修改:
例如2705
$this->SetFont($fontname, $fontstyle, $fontsize);
$this->SetFont(msungstdlight, $fontstyle, $fontsize);
還是1347
$this->SetFont($this->FontFamily, $this->FontStyle, $this->FontSizePt);
$this->SetFont($this->msungstdlight, $this->FontStyle, $this->FontSizePt);
或是2276
$this->SetFont($headerfont[0], ‘B’, $headerfont[2] + 1);
$this->SetFont(msungstdlight[0], ‘B’, msungstdlight[2] + 1);
因為$this->SetFont的位置不少,但是使用的方法不同,都要改為msungstdlight嗎?
除權限控制外
你也可以安裝一個Module Manager模組
他可以讓你關閉不用的模組~雖然我自己沒裝….
vtiger下一版的測試站上已安裝此模組,你可以試看看http://en.vtiger.com/wip/index.php?module=Settings&action=ModuleManager&parenttab=Settings
後台設定 > 設定權限
全部設為私人的,如有特殊需求,再於下方自訂規則
備註:如果有作過任何權限上的設定,一定要記得點選 重新計算
這樣權限設定才會生效
可有两個可行方法:
方法一: 如果已按照上述Q3的方法修改成功,能夠在pdf顯示中文的話,請將msungstdlight取代所有已修改為fireflysung字體的檔案就可以了。
方法二:
1. 先下載tcpdf 4.5.027
http://sourceforge.net/projects/tcpdf/
2. 將整個tcpdf4.5.027內檔全部覆蓋到vtigercrm 中文化的/include/tcpdf內
3. 將pdf.php及body.php (include/tcpdf/templates/)這些files內的Helvetica字體全部轉成msungstdlight即可,我是不用修改tcpdf.php。
請問報表導出 Excel 中文亂碼,如何解决?
其它討論區提供以下修改方法,仍不能解决問題。
include/utils/export.php
236行改为
$content = iconv("UTF-8″,"GBK",$content);
你應該也是繁中系統吧!?
我的設定是
$content = iconv("UTF-8″,"BIG5″,$content);
更改BIG5問題仍不能解决
您好,我這邊也成功了
因為當初我用的方式就是把字體更名,然後產生字體檔freeserif
所以我那時並沒有改程式
現在用您提供的方法
將include/tcpdf/pdf.php及include/tcpdf/templates/body.php
兩個檔案內的arial、Helvetica字串全部轉成msungstdlight即可
原則上只要修改有SetFont字串的即可,例如:
$pdf->SetFont( "helvetica", "", 10);
改為
$pdf->SetFont( "msungstdlight", "", 10);
這樣就行了,我的PDF轉出後不到15K,謝謝囉。
剛剛試過了,那個確實無效,我也忘了當初改哪個地方了…
你看看下面連結的第6篇試試
http://forums.vtiger.com/viewtopic.php?p=79349
改變後,目前使用者反應兩個問題
1. 輸出表格關於商品編號、商品名稱、數量、價格…這一行文字壓到下緣框線
2. 右下方頁碼不見了
文字壓到下緣框線問題,請到\include\tcpdf\config
更改tcpdf_config.php #204 – 216行
* magnification factor for titles
*/
define(‘HEAD_MAGNIFICATION’, 1.1);
/**
* height of cell repect font height
*/
define(‘K_CELL_HEIGHT_RATIO’, 1.0);
/**
* title magnification respect main font size
*/
define(‘K_TITLE_MAGNIFICATION’, 1.3);
再更改#181行
define (‘PDF_FONT_NAME_MAIN’, ‘msungstdlight’);
按照你提供的連結更改,報表成功導出 Excel 中文
謝謝!
請問如何在Invoice導出為Excel檔
沒辦法囉…因為內建的invoice沒有這個模組
目前看到的下個版本5.1也不會有
只有對岸的C3CRM有此功能~但要$
謝謝囉,我用0.5,比較偏中間的位置
因Invoice滙出成pdf格式,又不能在報表顯示每張Invoice明細,所以不能取得Invoice明細數据格式,作為其它報表统計用途。
請問有何方法轉出Invoice明細數据格式(如Excel)。
Vtiger5.1.0 Invoice 輸出 pdf 格式,如何調整每頁的產品展示行數。
在Vtiger5.0.4 版本只要修改includetcpdfpdfconfig.php 第22行 $products_per_page="10″ 即行。新版本就無反應,只能显示預設的8行產品。
各位先進您好,
我不是IT也不是PHP的專家,這幾天我一直照著各位先進所指導的方法安裝希望可以解決PDF輸出的問題,但是一直都沒又辦法成功,輸出的ㄓ中文內文還是顯示吉林路100號這樣的符號,我想請問各位先進,這是因為我安裝的fireflysung字型有問題嗎?因為我是用Mac所以我不知道怎樣轉換字型.z檔,所以我只好從大陸網站下載人家轉好的,這樣的結果有點像是無法對應到應有的中文字對嗎?因為我轉出來的PDF檔案約7M,所以我所安裝的fireflysung字型應該是有embed在所輸出的PDF檔案中間
還是因為我是安裝jumpbox所生產的VM版本Vtiger, 所以會有這樣的問題呢,Jumobox虛擬伺服器版本是將vtiger安裝在ubuntu linux上,這會跟生成中文PDF有關係嗎?
另外我看到tcpdf.php裡面很多字串所指定的都是truetype unicode font, fireflysung字型是屬於這種嗎?還有哪些中文字型是屬於true type unice font, 我可以在網路上下載轉檔呢?還有Mac有轉檔程式嗎?
希望各位先進可以惠於指導
謝謝!!
Allen
奇怪的事情發生了,我剛剛把PDF上面的亂碼貼上來, &# 21513;&# 26519;&# 36335;100&# 34399(我稍微加了一些空格),在這個網頁卻變成了“吉林路100號”,這代表那些字串是Unicode編碼沒有錯,所以我的問題適因為我上傳的字型有缺繁體中文字體嗎?
請幫忙
謝謝
Allen