這是個複雜的題目。要出PDF的: Invoice, Purchase Order, Quote, Sales Order ,,等。有以下幾個問題需要解決:
1: PDF 中文亂碼
2: PDF 中間有個討厭的浮水印,Approved, Auto created, Paid...要去掉,,不好看
3: PDF lay out ,,格式要改一下
4: PDF 字型,,看能不能用Windows的true type,, 在中文字型,Linux還是不如Windows
1:中文亂碼:
這兩個更改的地方都是 function SetFont
(1) 在 vtlib/Vtiger/PDF 打開 TCPDF.php ,在 73行左右的
if ($size == 0) {
$size = $this->FontSizePt;
}
底下插入 $family = 'stsongstdlight';
(2) 在 include/tcpdf 打開 tcpdf.php , 在 3064行左右的
if ($size == 0) {
$size = $this->FontSizePt;
}
底下插入 $family = 'stsongstdlight';
這樣PDF的中文就不會亂碼了,,可是字型有點醜,字的間距不平均。。。有時間再來改。
2: 去掉浮水印 watermark。
起初,以爲只要把有watermark的命令comment掉就可以了。。用 grep -iR 'watermark' ./* 指令,在vtigercrm以下的目錄搜尋,找出有watermark的檔案,,都給他comment掉。。還是不行。既然,不能去掉浮水印,,那我讓浮水印的內容爲空,,可以吧。最後終於找到罪魁禍首了,是function getWatermarkContent() , 用 grep -iR 'getwatermarkcontent' ./* 把所有包含這個function的檔案找出來,在一個個改,共有5個檔案:
./include/InventoryPDFController.php
./modules/PurchaseOrder/PurchaseOrderPDFController.php
./modules/Invoice/InvoicePDFController.php
./modules/SalesOrder/SalesOrderPDFController.php
./modules/Quotes/QuotePDFController.php
方法如下:
找到 function getWatermarkContent ()
function getWatermarkContent() {
//return $this->focusColumnValue('invoicestatus'); // 把這行comment掉
return ''; // return空字串,就沒有watermark了。。不然填進去你要的內容也行,,,比如說,,"出來行的,遲早要還的" , 或是 "做生意要講信用,付款要準時"
}
3: 格式 Lay out,很複雜,到目前還沒搞清楚PDF是由那些檔案生成的,,是tcpdf,,還是fpdf。 如果不直接改source code,有個module可以解決 -- PDFMaker
到這離下載PDFMaker的module,?group_id=334&release_id=860,然後在module manager 安裝。安裝完之後,在menu的tools裏面會出現 PDF Maker,點進去,系統提示還要安裝mpdf。到這下載mpdf ,然後解壓縮到 modules/PDFMaker 底下,把目錄名改爲mpdf。
在回到tools -> PDF Maker,,可以編輯4個PDF檔 ,分別是 Invoice, SO,PO,Quote,,,這個方法不錯,,,但是,,我還是想直接改PDF的source code....慢慢研究吧。。
Vtiger的editor還不是很好用,有時要直接編輯source code。改着改着,,竟然打不開編輯畫面了,,應該是改壞了。。。咋辦呢? 解法如下:
進phpmyadmin直接編輯database,打開table pdfmaker,field body就是PDF的內容,奇怪的是,,這是一個bin檔,叫做 BLOB-4.7KiB,click一下,,就會下載,用gedit打開看一下。。。。啊就是文字檔啊。。檢查一下內容哪裏有問題,,修正完之後,存檔。再把它存回database。。這樣就能打開,繼續編輯了
還有另外一個問題: 錯位,文字重疊。這個會發生在有文字以外的符號,,比如說減號 - ,括號()等。解法如下:
把減號改爲全型的,,就是比減號長的那個。或者是用table 的td把符號隔離。不然就多打幾個空格把符號和後面的文字隔開。
後記: 奇怪的是裝到hostmonster之後,PDF竟然是亂碼,,,怪了。比對一下自己的server 和hostmonster在PDFMaker目錄底下有那些內容不同,,結果發現ttfonts和ttfontdata和config_fonts.php在字型的設定上不同,,,乾脆吧PDFMaker整個目錄從自己的server上傳到hostmonster。 問題解決。hostmonster上用PDFmaker出invoice沒亂碼了。