[VtigerCRM][模組] PDF Marker for 6.x的客制化PDF設計

大概2014年1月就已經放出了vtiger 6.0的下載。但遲遲強大的PDF Maker卻只開放付費版使用。經過了半年之後終於5月底才放出來了Free免費。

PDF Maker是一套第三方的擴充套件,主要解決原本系統的四大PDF生成的設計不便問題。使用了PDF Maker,您可以很輕鬆的透過HTML語法滿足想要的Template自訂風格設計。同時可去抓取相關表單所需模組欄位在PDF上的資料呈現。

免費版與付費版的最大差異,能否在於四大表單系統(報價單、銷售訂單、發票(出貨單)、採購訂單)的Template設計數量。譬如你需要可以產生EN版的又能TW版的這樣就算2個Template。免費版就不適合您來使用。

付費版約台幣2千左右。詳細有興趣購買付費版請自行前往了解。我不是工商服務,我只是說明免費版有多少功能而已。

免費版的官方連結在此,很抱歉官方一樣沒有提供zh_tw。所以我從以前翻譯的版本沿襲過來用,完整度大約40%。我沒有全部翻譯完,因為只是個設定套件,一般User並不會去查看PDF Maker Setting。

PDF Maker Free for vTiger CRM v6.0.0 免費版下載處 By Google Drive


由於PDF Maker免費版本剛出來太新,還有一些小問題。相關問題整理如下:



從vTiger 5.4.0升級上去vTiger 6.0.0,PDF Maker無法正常運作
解:
PDF Maker 5.4環境跟6.0環境完全不一樣,你一定要先在5.4的環境徹底移除乾淨PDF Maker。你必須要...

1. 透過自撰的delete_module.php,根據vtlib來移除Module。
2. 移除根目錄下的module/pdfmaker,以及smarty/templates/modules/pdfmaker,還有cache
3. 移除SQL的vtiger_linker跟PDF Maker有關的資料檔,大約4筆兩組共8筆。
4. 移除SQL上面命名為vtiger_pdfmaker_... 的所有資料表

當你完成舊板上的移除之後,再來升級上去才能正常安裝且運作。


為何Head/Footer會失效無法顯現
解:
官方忘記對Head/Footer的高度屬性補上去,導致Save Setting時這兩個參數無法入值變成0。等待PDF Maker fixed或者從SQL的vtiger_pdfmaker_setting,修改disp_header=3,disp_footer=7

如何調整輸出PDF紙張大小為中一刀
解:
PDFMaker 6.0 Free提供了此設定,選擇custom即可,中一刀的參數為 215.9 x 139.7。

中文輸出PDF都是口口口口
解:
mpdf的列印問題,修改modules\PDFMaker\resources\mpdf\config.php 約44行,更改$this->useAdobeCJK = true;

輸出字體是簡體
解:
老問題,去修改modules\PDFMaker\resources\mpdf\config_cp.php

  else if ($country == "CN") {  
   if ($adobeCJK) {  
   //$unifonts = "gb,gbB,gbI,gbBI";  
   $unifonts = "big5,big5B,big5I,big5BI";  //強迫改為Big5成為繁體  
   }  

留言

  1. 不好意思想請教一下,我從5.4升級到6.0依照上面的步驟移除在更新,但是安裝6.0版本的pdfmaker之後,輸出它顯示 "mPDF error: Invalid page format:" ,這樣該如何解決呢?

    回覆刪除
    回覆
    1. 這畫面從哪個操作時跑出來的?

      刪除
    2. 從報價單要使用PDFMAKER導出後所跳轉道的訊息。

      刪除
    3. 原本舊的pdfmaker 資料還存留在MySQL,所以才會發生這個問題。
      基本上還要多做一個動作
      4. 移除SQL上面命名為vtiger_pdfmaker_... 的所有資料表

      看你要不要再進行一次5.4 to 6.0,把第四點處理掉最簡單

      或者

      這時候進入到vitger_pdfmaker_setting,找出是哪個設定有問題。
      譬如輸出紙張大小,先改回A4。

      刪除
    4. 這位朋友出現的問題應該也是由於vitger_pdfmaker_setting丟失相關的記錄資料,導致提示mPDF error: Invalid page format。我安裝的版本是5.4升級到6.0,並且執行了清理舊資料的操作後,安裝的PDFMaker。

      刪除
    5. 解決"mPDF error: Invalid page format:"這個錯誤,可以修改SQL的vitger_pdfmaker_setting的字段owner的類型為varchar就可以。我沒有從php代碼看,只看了modules/PDFMaker/actions/SavePDFTemplate.php,剛接觸vtiger看不明白,開啟了mysql的log,發現insert into vitger_pdfmaker_setting語句有問題。
      這句話是在modules/PDFMaker/actions/SavePDFTemplate.php的Line 99 開始執行的。
      注意在修改之前需要按照博主的方法重新安裝PDFMaker,因為vitger_pdfmaker_setting由於操作會丟失記錄,無法恢復。

      刪除
    6. 我修改之後 變成了 【mPDF error: Unable to create output file: cache/報價單.pdf】這格錯誤 = =

      刪除
    7. 建議在5.4那裡的時候,把PDF Maker徹底移除,尤其是SQL資料表那裡跟PDF Maker有關的都刪掉。讓6.0保持乾淨的狀態,才能安裝PDF Maker for 6.0。

      刪除
    8. 但我用其他語系(內建英文或其他語系),輸出報價單是正常的,然後由於6.0版本輸出報價單PDF是讀取不同語系之標題,可能是中文字的問題,不知道這樣是否有解

      刪除
    9. 我用純6.0的然後再中文化然後裝PDFMAKER,輸出報價單的時候依舊出現mPDF error: Unable to create output file: cache/報價單.pdf,這跟伺服器的環境是否有影響?

      刪除
    10. 1. 先跳過4-5樓的做法,照正常方式安裝乾淨6.0與中文化+PDF,不要去修改MySQL
      2. 安裝PDF Maker會引導安裝mPDF,這裡順著去完成
      3. 對整個vtiger資料夾先權限改為755or777
      4. 完成之後,先不要修改PDF Maker設定範本,直接匯出來看看

      我想知道正常最乾淨的動作下,還能不能正常


      刪除
    11. 依照上面步驟來做,在英文介面或其他內建語言是可以輸出報價單的,設定成為繁體中文之後,就會出現錯誤。我的環境是windows server 2012 不知道是有影響

      刪除
    12. 確定第三步驟,整個資料夾權限為755or777嗎?

      刪除
    13. 確認過了,是正確的

      刪除
    14. 目前猜測偏向於MPDF無法在windows 2012裡面,無法建立一個以"中文"命名的"報價單.pdf"這個檔案。
      pdf maker這一版會根據語言產生*.pdf,譬如EN輸出叫做Quote.pdf,TW輸出為報價單.pdf。

      所以"cache/報價單.pdf" 這個路徑,對你的OS來說路徑不存在,因此無法寫入路徑為

      解決方法
      1. 找出報價單這個關聯翻譯或是php編碼,讓中文輸出的檔名為Quote.pdf,而不是報價單.pdf
      2. 調整Windows語系,讓這個cache/報價單.pdf 之路徑名稱是合法可理解

      刪除
    15. 有點像我們去安裝簡體軟體,整個路徑名稱在未知編碼之路徑下都會看不懂。
      目前看起來vitger+pdf是正常的,只差別繁體輸出有問題,翻譯過程沒啥影響,只差在於輸出的命名方式。

      既然是無法建立『報價單.pdf』,我猜測為
      mpdf對OS說:俺想建立一個檔案路徑為cache/報價單.pdf
      OS回:cache/報價單.pdf?報價單這個編碼我看不懂,此路徑不存在
      mpdf哭著對你說:俺沒辦法建立,哭哭~

      刪除
    16. 修改C:\Program Files\vtigerCRM610\apache\htdocs\vtigerCRM\languages\zh_tw目錄下的Vtiger.php
      將'Quotes'=>'報價單',修改為'Quotes'=>'Quotes,雖然首頁的 報價單 也變成 Quotest,但是輸出就不會出錯了。

      刪除
  2. 在安裝後,第一次修改系統提供的4個模板均提示成功,但是第二次修改就無法保存。我發現是由於vitger_pdfmaker_setting丟失相關記錄,修改一個就丟一個。但不知道是什麼原因導致資料丟失。

    回覆刪除
    回覆
    1. 因為PDF Maker 5.4沒移除乾淨,變成有部分的SQL資料表在6.0安裝時會自動忽略舊版的資料表。整個錯亂

      刪除
    2. 另外vitger_pdfmaker_setting的結構 5.4跟6.0不一樣,所以寫入的時候總是Fail。我的推測是這樣

      刪除
    3. 我的問題也是出在第一次修改系統提供的4個模板均提示成功,但是第二次修改就無法保存。
      不知站長是否有解決的辦法。

      刪除
    4. 我猜你之前有安裝到舊版的PMK 5.4.0,導致mysql的vitger_pdfmaker_setting結構是舊的,現在又灌上PMK 6.0,6.0跟5.4的PMK差異很大。我建議你重新安裝一個乾淨的vitger 6.0,再安裝本篇的PMK 6.0試試。不要再拿目前這個試了,mysql資料表已經錯亂了。

      刪除
    5. 我的vtigerCRM 是全新6.0安裝的哦! 不是升級的。一直找不出問題,重裝都只能套用一次,想再修改就沒辦法了。

      刪除
    6. 不是指你的CRM是5.4上去的,是說可能安裝錯誤的版本。6.0的CRM一定要6.0的PMK,重裝PMK是解決不了的。

      重新確認這個動作是否OK:新安裝vtiger,資料夾權限777,重新下載本篇再安裝PMK for 6.0,不要改內容,能不能匯出PDF? 去改body測試,再匯出。

      告訴我上面哪個步驟卡住了

      刪除
    7. 裝的版本都是對的,我已經找出問題點了,因為vitger_pdfmaker_setting由於操作會丟失記錄,無法恢復,所以我另外安裝一套vtigercrm,看出儲存後vitger_pdfmaker_setting 會被清空,所以我有將值先匯出,出在SQL的vitger_pdfmaker_setting字段owner的類型更改為varchar就解決了。
      感謝你了。

      刪除
  3. 就算是重新的環境全新安裝6.0還是會有無法儲存與套用的問題,但這問題只有第一次不會,要在編輯就不法在儲存和套用了,不知怎樣處理,況且disp_header=3,disp_footer=7 預設值就是這樣。

    回覆刪除
    回覆
    1. 你的ID是陌生的,你是接續匿名者的話題嗎?

      刪除
    2. 不是哦,我是新加入瞭解vtigerCRM的新成員,只是也遇到Pdfmaker無法儲存和再次編輯修改的問題。
      不知這問題有解嗎?
      一開始是安裝PDFMakerFree_600_1 之後也有更新至PDFMakerFree_600_2,但模塊功能那又顯示有更新版本,PDFMaker-600.0.1 檔案大小有31.4M更新之後也沒什變化。

      刪除
    3. 我的PMK版本沒有那麼多,只有一個。模塊也不會有更新功能,你誤會挺深的。
      你的問題該屬資料夾權限需設為755或777看看

      刪除
  4. 請問一下,PDF Maker 輸出pdf有辦法改字型嗎?

    回覆刪除
    回覆
    1. PDF Maker是透過mpdf 來建立檔案,可以goo一下 mpdf font

      修改之處應該在 modules\PDFMaker\resources\mpdf

      可參考http://www.mpdf1.com/forum/discussion/1220/adding-fonts-in-mpdf/p1

      刪除
    2. 太好了,感謝你給我這條線索。已經解決囉。而且用PDF Maker 輸出的檔案很小不到100kb。

      刪除
    3. 聽起來很棒,盼你能分享修改方法給所有人。

      刪除
  5. i have the same problem:invalid page format error when i try to pdf my invoice. I tried drop, truncate the table, but could not solve the problem. I could not save the page setting on pdfmaker screen. Finally I saw my vtiger_pdfmaker_setting table has only three row, but i have 4 templates! the templateid=1 (invoice) was missing, so i recreated that row of data on myphpadmin, and the problem is resolved!

    回覆刪除
  6. 我架設的是Vtiger 6.1 + PDF Maker,請問有沒有人遇過下列問題
    輸出報價單時,所有的欄位都未正常顯示,例如:
    客戶ID顯示 $ QUOTES_ACCOUNT_ID $
    客戶地址顯示 $ QUOTES_BILL_STREET $

    回覆刪除
    回覆
    1. 你參數從哪來了,PDF Maker撈給你的參數嗎?

      一定要PDF Maker提供的標籤文字才行,
      看起來應該長這樣
      $M_QUOTES_ACCOUNT_ID$

      刪除
    2. 自己回覆,不知道是甚麼原因,PDF Maker的4個樣板中,每個$後面或前面都多了個空白字元,所以轉出PDF時才會出現顯示 $ QUOTES_ACCOUNT_ID $ 這樣的結果,修掉這個問題後就正常了

      目前剩下%的問題 %G_Qty% 、 %G_Discount% ....努力測試中

      刪除
    3. 您好,前面的問題已經解決,主要是$前後有空白的問題,處理後就正常了
      但現在有另一個問題,沒看到產品資料,請見截圖
      http://a360.co/1FtnDHU
      您是否有遇過這方面的問題呢?

      刪除
    4. 您好,我的表單參數顯示問題,在移除/重裝後就解決了

      刪除
    5. 建議透過線上Store進行安裝最新版本6.0.004
      安裝完畢後,別急著測試,先參考已存在的範本,來了解如何編輯PDF

      刪除
    6. 作者已經移除這則留言。

      刪除
  7. 您好,謝謝您的資料,我後來發現PDF MAKER內建的表格有空白字元、符號為大寫的問題(我不知道原因,但進行調整後有比較正常了)
    但是 #PRODUCTBLOC_START# 到 #PRODUCTBLOC_END# 的區塊應該要顯示產品資訊,可是並沒有正常顯示(只顯示 #xxxxxxxxx# 的文字)
    您方便提供一個檢查方向嗎?

    回覆刪除
  8. 在vtiger 6.3或者6.4汉化的情况下,安装pdfmaker,导出后显示空白页,没有任何报错信息,这个问题怎么解决?

    回覆刪除
  9. 补充下,这个我已经搞定了,关于
    “修改C:\Program Files\vtigerCRM610\apache\htdocs\vtigerCRM\languages\zh_tw目錄下的Vtiger.php
    將'Quotes'=>'報價單',修改為'Quotes'=>'Quotes,雖然首頁的 報價單 也變成 Quotest,但是輸出就不會出錯了。”

    能不能详细解释下?

    回覆刪除
    回覆
    1. 檔案存放路徑有中文存在,所導致HTML編碼輸出路徑異常。唯獨發生在Windows平台上,其他OS平台反而正常。之後我沒有追查下去如何解決。

      刪除
    2. 參考方向
      http://yishouce.com/article/8.html
      http://blog.csdn.net/ljfrocky/article/details/47682515

      盼望有人可以找出pdf maker for windows中文用戶的代碼修正方法

      刪除
  10. 做個安裝記錄

    升級了Vtiger (6.1->6.5),發現PDF Maker Free 出現了問題,試了很久,最後只好選擇移除/重裝
    我不知道如何備份樣板,所以直接在PDF Maker設定頁面選擇Uninstall(並手動刪除了PDFMaker目錄)
    下載點 http://forge.vtiger.com/frs/download.php/1343/PDFMakerFree_600_0_4.zip

    通過 Vtiger 的CRM設置\工作室\模塊管理,找到左下方的 Install from Zip,選擇前面下載的zip進行安裝
    安裝過程會要求再安裝mpdf模組。
    按下Download 後,不知道還要做甚麼(PDFMaker\resources有看到一個目錄 mpdfi)
    再按一下Download,好像就安裝完成了

    ※安裝後一樣要處理中文字變方塊的問題
    修改PDFMaker\resources\mpdf\config.php 第63行
    useAdobeCJK = true

    ※樣板因為重新安裝,所以要重新處理...有人知道如何備份嗎?

    回覆刪除

張貼留言

留言請注意禮節與尊重他人,良好的交流環境需要你我共同維護。

VtigerCRM 相關留言討論,請改至FaceBook社團申請加入使用
https://www.facebook.com/groups/vTigerCRMtoTaiwan/