[VtigerCRM][模組] PDF Marker!Vtiger PDF的客制化設計

話說前篇在處理PDF的版面調整時碰到很大的問題,當我翻遍整個Vigter論壇幾乎每個外國人都說何不使用PDF Marker模組。原本抱持著"原味才夠香"的心態想試試,結果整個程式相依性太高太廣不易修改。結果使用PDF Marker卻覺得真是偉大的模組套件~

PDF Marker有授權板跟免費版兩種,差別在於能否在一個模組表單李建立多個不同樣板範本供選擇輸出。授權版本大概要一千塊台幣,如果沒有太多需求而言免費版挺夠用了。

PDF Marker是協助將四個表單(發貨單/Invoice、銷售訂單/Sales Order、採購訂單/Purchase Order、報價單/Quotes)做PDF設計,設計時只用到HTML/CSS2就能輕鬆設計完成。同時能自動根據不同的翻譯語言做報價單更換,此外也能設定輸出的紙張類型,除了不支援CSS3讓我頭痛外,其他沒有什麼太大缺點。

Step 1. 安裝
請直接到PDF Marker官方網站下載免費版 for Vtiger 5.4.0,下載後同樣根據Vtiger的模組上傳方式進行安裝動作。同樣的沒有支援繁中包,所以我另外做一個中文化的PDF Marker for v5.4.0供給使用下載
PDF Marker for vtiger 5.4.0


當整體安裝完畢,請跟著提示步驟完成。最後可透過工具->PDF Marker對四個表單做設計,設計時一樣分為Header、Body、Footer進行


安裝完畢,在工具列多一個PDF Makrer可選擇

以報價單為例,有各屬性與函數可插入HTML/CSS使用

Step2. 修改簡體變繁體
事實上當我使用PDF Marker時一直會當成簡體字型輸出,使得我的PDF不能正常顯示預設的繁體字型,目前還不清楚為什麼這樣(請高手協助)。如果你沒有使用簡體PDF的需求,請跟我一起強迫中文都是繁體輸出吧

修改 /modulesPDFMaker/mpdf/config_cp.php

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

PS: 根據網友william Hsiao說明,在安裝完畢後建議重啟IIS確保正常。


調整PDF Marker的小數點問題
有人來問如何調整小數點,可透過各個PDF模板當中的參數來設定,以報價單為例請參考圖片解說:

範例中的PDF數字格式為台灣貨幣設定



在PDF Marker上增加可判斷的參數
使用PDF Marker雖然可以採HTML搭配各個參數函式來設計,但如果要使用一個具備條件功能的函式似乎只有付費版的才行。譬如在報價單上,如果沒有折扣值則不顯示,反之當折扣值成立才顯示。實際上我有去試用付費版的功能說真的介面很雜亂且功能性都不太符合期待,而且為了條件式折扣這個需求要我花錢這打破我的底線( 本人幫公司架Web到目前為止還沒花過錢呢),不如改個方法使用內建的Workflow來滿足這個需求吧!

以下以報價單為例,希望有條件的根據是否為0來取決於顯示折扣欄位:


  1. 首先,你需要在報價單的Layout佈局設計上新增一個區塊,並且該區塊內新增兩個自定義字段分別做為Workflow的『折扣標題』以及『折扣金額』。
  2. 新增一個工作流於報價單內,實施每當折扣為0的工作事項並且在每次保存記錄的時候。條件為Discount Amount equal 0,任務建立兩筆為 折扣標題 = null 與 折扣金額 = null
  3. 再新增一個工作流於報價單內,實施每當折扣不為0的工作事項並且在每次保存記錄的時候。條件為Discount Amount does not equal 0,任務建立兩筆為 折扣標題 = '折扣' 與 折扣金額 = discount Amount
  4. 接著在PDF Marker上,將這兩個自定義字段擺放想條件顯示的HTML位置上。
  5. 接著試著使用報價單去使用折扣功能,看看表格內的自訂區塊之兩筆欄位是否正確判斷產生期盼的效果。PDF功能滿足後,再回到佈局將該區塊隱藏避免USER勿觸。
透過Workflow來辦到要不要印數據出來
設置任務裡,要null的寫法

設置任務裡,要顯示值的寫法




增加PDF Marker的紙張類型
原本公司都用EXCEL做為出貨單人工填寫,因此期盼透過Vtiger CRM來產生。在免費版的PDF Marker當中只有內建的A3-A6以及LETTER與LEGAL可用。公司的報表紙為中一刀,沒有多餘的考量只能自己增加一個中一刀來用,當然付費版好像也有,不過改Code比較快

修改/modules/PDFMaker/EditPDFTemplate.php
 $Formats = array("A3"=>"A3",  
          "A4"=>"A4",  
          "A5"=>"A5",  
          "A6"=>"A6",  
          "Letter"=>"Letter",  
          "LETTERHALF"=>"LETTERHALF",  
          "Legal"=>"Legal");  

修改modules/PDFMaker/mpdf/mpdf.php
                case 'SRA3': {$format = array(907.09,1275.59); break;}  
                case 'SRA4': {$format = array(637.80,907.09); break;}  
                case 'LETTER': {$format = array(612.00,792.00); break;}  
                case 'LETTERHALF': {$format = array(612.00,396.00); break;}  
                case 'LEGAL': {$format = array(612.00,1008.00); break;}  
                case 'EXECUTIVE': {$format = array(521.86,756.00); break;}  
                case 'FOLIO': {$format = array(612.00,936.00); break;}  
這裡的單位為point,而一英吋為72point~




留言

  1. Dear 大大:

    您的中文化的PDF Marker for v5.4.0可否開放授權下載呢?
    再麻煩您~謝謝!

    回覆刪除
  2. Dear 江大:

    照您上面的增加參數中,不曉得您會不會碰到,當Discount=0時,折扣金額理論上應該是null,但目前我用的話會是變成 0 ,
    若想要將任務條件折扣金額=null時,改成折扣金額="字段",系統會跳出無效,不曉得您知道這方面的問題嗎?

    回覆刪除
    回覆
    1. 1.你檢查一下你的條件與觸發條件是否正確,另外這個0顯示是指在PDF上出現嗎?
      2.撰寫任務時需要根據程式寫法來呈現,請重新看我的圖片說明(已補上任務的寫法示範)
      3.null是指不輸入的意思

      刪除
    2. 初期我任務沒特別寫出來示範,是想看有多少人認真的來深入學習使用
      看你這麼挺有實驗精神,我辛苦實驗摸索後寫教學也有滿足感了(笑)

      刪除
  3. 哈哈~
    0 是出現在導出PDF的報價單,null我知道是空
    條件是這樣 當discount=0時,條件以下1.折扣標題=null 2.折扣金額=null,但導出PDF後,報價單上折扣標題會不見,但折扣金額會=0
    若想讓折扣金額=其他文字做替代,會出現"字段值無效",所以現在很尷尬。

    回覆刪除
    回覆
    1. 抱歉我發現我的PDF也有0,我們家的業務跟客戶沒有人反應所以我就沒去注意。
      這問題在於設定折扣金額的欄位型態為"數字",因此null對系統來說數字就是0。
      如果你想徹底拿掉可以試著把這個佈局下的折扣金額欄位型態改"文本"試試,否則任務的寫法要想辦法成立為『折扣金額=文本(數字)』

      刪除
    2. 我實驗過了,可以用'文本'的欄位型態採用Field來表達(暨將數字以文字來表達)。這樣文字欄位型態可以有null也可以顯示數字文。
      但有缺點會出現小數,因PDF Maker可調數字格式的小數,但是以文字列印出來表達式,PDF Maker就不懂的處理小數了(因為是文字)

      我想起來我老闆好像有問我為啥有0,我當初回他的不想要零就掏錢讓我買PDF Maker付費版他就禁聲了...
      你如果有研究出更好的作法請分享給我 :)

      刪除
  4. 您好,您有試過輸出Word檔案過嗎?因為我輸出後圖片無法連結及頁首頁尾皆變成亂碼但是內文卻是正常的現象?@@"

    回覆刪除
    回覆
    1. Word?? 有這功能嗎? 只能輸出PDF檔案格式不是?

      刪除
  5. 拜讀您的文章,收益良多!!!感謝

    回覆刪除
  6. 請教江大您提供的PDF MAKER
    我下載後使用產生出的報價單 例如 數量或小計 相關欄位都正常顯示 可是在內容的欄位 他會出現text 而不是內容
    試問江大該如何處理呢!?謝謝
    ps.大家的報價單或銷售訂單都不需要簽名這個欄位嗎???

    回覆刪除
    回覆
    1. 1. 聽無,貼個圖來看看
      2. 看你的業務行為考量,一般來說報價給客人,而回傳簽名視為訂單

      提供我設計的報價單,給你參考
      https://docs.google.com/file/d/0Byxm_hqPREF3WFoyUlNwTFA2Y0k/edit?usp=sharing

      刪除
  7. 江大:
    你的報價單就是我心目中的所追求的單子阿!!
    謝謝您無私提供我這麼棒的範例!!!跪拜!祝您有美好的一個周末!!
    all the best

    回覆刪除
  8. 江大
    不好意思,我使用PDF Maker想要依照您的說明建立新的報價單,但是很奇怪的是,在Header 建立抬頭後,不管資料怎麼轉PDF報價單首頁跑一筆後,再跳到下一頁,再繼續.我有看過並沒有跳頁的程式碼.請問是哪裡的問題呢?

    https://drive.google.com/folderview?id=0ByLyw6MKJ2_-UnljZWJaeUJuWTQ&usp=sharing

    回覆刪除
    回覆
    1. 最近太忙,現在才有空看網誌。紙張大小等設定先調A4看看

      刪除
    2. 非常感謝江大
      一直搞不定,最後我把他全部清空重新再做一次報價單,然後重啟IIS和重開SERVER後,竟然就好了...

      刪除
    3. 感謝你的實驗排除精神,會在文章中建議安裝完PDF Marker後重啟伺服器。

      刪除
  9. 您好!我在編輯公司信息logo名稱,上傳檔案後…左上角應該會有logo,可是無法顯示,報價單要導出PDF檔,則變成出現TCPDF ERROR: [Image] No such file or directory in test/…
    我是沒有任何程式資訊背景相關的人,是不是還是花錢購買來使用這套軟體比較方便阿…@@

    回覆刪除
  10. 不知道你圖片是哪種格式? 尺寸是否太大?
    你的Vtiger 5.4.0跟PDF Maker是從我這裡一起下載照著安裝的嗎?

    1. Vtiger CRM不建議花錢,較適合給沒預算的中小企業或一人公司所用
    2. 如果沒有程式背景,找個人幫你處理到可正常運作,只要全設定好無誤不再調整時,幾乎就不用再維護了。


    回覆刪除
    回覆
    1. 是jpg檔,4KB...會太大嗎?
      我全是在你這邊一起下載照著安裝的呢!
      謝謝你的回答阿!~~~但要處理到可以正常運作對我來說似乎是個難題@@
      不過這個部落格已經幫了我很多了呢!感謝阿~~~~

      刪除
    2. 我的問題解決了,在我把上傳的檔名從中文+英文改成只有英文的檔名…圖片就沒問題了…噗…我弄好久耶…天哪…
      接下來的問題是,當我嘗試把報價單轉PDF檔的時候…出現了好多好多問號…改怎麼解決呢?@@

      刪除
    3. Vtiger本身有自己的PDF功能(很爛),本篇介紹的是另外安裝PDF功能。如果照著本篇安裝成功,你在報價單那裡會看到兩個PDF選項,一個是內鍵的(預設時會有亂碼),一個是PDF Maker。

      是否你確認選的是PDF Maker匯出來的PDF??

      其實搞這東西說難不難,只看有沒有以成就感達成的方式,持續嘗試排除下去。

      刪除
    4. 是的,亂碼是在工具內建那欄轉出來的時候出現的。
      我從PDF Maker轉出來出現的則是Error - mPDF requires mb_string functions. Ensure that PHP is compiled with php_mbstring.dll enabled. 空白頁…
      然後我在您的安裝步驟中"Step2. 修改簡體變繁體"
      修改後卻無法儲存…出現"存取被拒"…
      後面選擇紙張的部份也是…
      請問問題出在哪裡了呢?

      刪除
    5. 你的PHP版本環境有點問題,參考PDF Maker官方排除方式
      http://www.its4you.sk/en/pdfmaker/faq.html

      等你的PDF Maker運作成功之後再處理剩餘問題

      至於紙張問題以及修改繁體問題,你要先調整個資料夾權限為為777 (這需要IT背景理解)

      刪除
  11. 現在轉出來是完全空白…那可能是什麼問題呢?
    後面紙張及繁體問題,php已修改

    回覆刪除
    回覆
    1. 我剛才可能沒有說清楚…現在轉出來是有PDF檔
      之前是連PDF檔都沒有,只出現error ......
      但現在是PDF內文全空白…可能會是什麼問題呢?

      刪除
    2. 請問一下,我第一次打開PDF MAKER時
      會有您的留言上面寫著下載mpdf5
      但我還未解壓縮時PDF MAKER就已可以看到報價單…出貨單等等的選項了
      請問MPDF5是否需解壓縮放在某個地方?謝謝…
      一次問這麼多問題還麻煩您了…

      刪除
    3. 南西=匿名,同一人嗎?

      PDF功能確定正常的話,確認一下你的PDF Maker的版型設計,也就是Head Body Footer這三個部分是否有規劃東西。PDF印出來是根據這個版型來對應輸出

      我不記得曾留言要下載mpdf5這東西,如果你要使用PDF Maker這工具,請完全忽略掉內建PDF的設定與調整,因為兩者是完全無關聯的東西。

      刪除
    4. Head Body Footer有它的代碼邏輯性,如果代碼不對也會出現空白。

      如果你是台北人,可以幫忙處理

      刪除
    5. 是的,是同一個人:)

      我從PDF Maker/報價單進入 Head Body Footer有預設的值
      於是我回到報價單,在PDF Maker下轉PDF出來…是空白的
      轉得出檔案,但是空白。
      所以我應該回去PDF MAKER/報價單把預設都清掉重設嗎?

      刪除
    6. 有預設值的話應該可以印出些東西,不知道你有誤動到甚麼Code或缺少什麼導致此問題,目前確認mpdf或權限出點問題。

      看來你的問題得由我親自查看該vtiger狀況才行,因為這問題我不曾碰到也找不到官論有相近反應參考

      最近有點乾脆想弄一個新手專用懶人包,甚麼鬼都設定好了不用再調整,直接移植過去就能用。
      但我需要些試用對象是否可正常使用。

      刪除
  12. 我來後來請朋友幫我調整php後就可以轉出來了
    新手的我完全沒有辦法呀…
    若大大想弄個新手專用懶人包…我真的舉雙手占成阿!:)

    回覆刪除

張貼留言

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

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