2020年12月10日 星期四

SCRIPTCASE 處理 PDF、Grid 無法順利匯出PDF

ScriptCase 提供很多PDF匯出功能,使用了一些 Third Party 做的 pdf Class

而,Grid Export to PDF,則是使用 wkhtmltopdf 這個程式。wkhtmltopdf 不是一個 php class,而是一個可執行的 cmd 檔案,必須直接用 cmd 來下指令 將 html 產生 pdf

類似這樣:

> wkhtmltopdf  source.html  output.pdf

而 wkhtmltopdf 需要安裝在 產品主機上,才可以執行。

------------------------------------------------------------

Scriptcase 在自己Local開發環境下,Grip Application 可以順利的匯出 pdf 檔案。

可是,出版到產品環境時,卻無法匯出。

經過Google大神查詢結果,發現:

http://www.toughdev.com/content/2015/11/fixing-pdf-export-issues-when-using-a-scriptcase-grid-application/

1. 產品主機要安裝 JRE

2. SC使用  wkhtmltopdf ,所以

放在:/_lib/prod/third/wkhtmltopdf/os_.../

產生的檔案在

/_lib/tmp/ 

裡面有 grid 的 html 檔案。

還有一個執行 wkhtmltopdf 的 log 檔案

./wkhtmltopdf-amd64   --page-size A4 --orientation Portrait --header-right "[page]" https://malladmin.hongfumall88.com/_lib/tmp/sc_gamer_grid_link2_qrcode_pdf_html_hmsaloggbfeb16ekrisu8lbjb9.html /home/ddnews/domains/malladmin.hongfumall88.com/public_html/_lib/tmp/sc_pdf_20201210065017_905_gamer_grid_link2_qrcode_pdf.pdf


3. 需要打開 /_lib/prod/third/wkhtmltopdf/os_.../ 那個執行檔的權限為 "777",這樣就解決了權限的問題。

(直接用 SSH 在 Linxs cmd 下去執行 ./wkhtmltopdf-amd64   --page-size A4 --orientation Portrait --header-right "[page]" https://malladmin.hongfumall88.com/_lib/tmp/sc_gamer_grid_link2_qrcode_pdf_html_hmsaloggbfeb16ekrisu8lbjb9.html /home/ddnews/domains/malladmin.hongfumall88.com/public_html/_lib/tmp/sc_pdf_20201210065017_905_gamer_grid_link2_qrcode_pdf.pdf,結果出現  權限錯誤的問題,還有幾個 SC 產生的 html 裡面所指引的 .css 路徑錯誤 "/_lib/" 變成  "/_lib/_lib/....,這應該是 SC產生的 html碼 路徑錯誤!)


修改這幾個後,可以順利產生  pdf, 了,但是出來的中文卻是亂碼!

這個問題還要繼續解決!

======================

https://my.oschina.net/huqiji/blog/804899

終於在這個網頁找到答案了

中文亂碼或者空白解決方法

如果wkhtmltopdf中文顯示空白或者亂碼方框

打開windows c:\Windows\fonts\simsun.ttc拷貝到linux伺服器/usr/share/fonts/目錄下,再次生成pdf中文顯示正常


解決了!


=======================

2021/04/01今天愚人節!

SC的PDF又來搞怪了!

後來查一查,跟上面紀錄的一樣,就是那個執行檔案的權限,改為"777"就可以了!

可能是我前兩天有更新 deploy _lib檔案,而SC的預設權限為"666",

以後記得,如果重新 deploy lib檔案,這裡要來設定權限為"777"

/_lib/prod/third/wkhtmltopdf/linux-amd64/wkhtmltopdf-amd64.exe


沒有留言:

張貼留言

如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。