今天要分享在前端直接設定列印邊界的程式,之前的需求是列印的數據要直接印在紙本報表上
當然邊界的設定就很重要,故在列印前就用程式去指定
以免使用者去動過設定,格式整個就會跑掉
Survey過程中,意外發現兩個套件(IE Only),紀錄一下:
ScriptX為一個前端的套件,透過此套件可以輕易的用Script去操控印表機設定
http://scriptx.meadroid.com/home.aspx
只要下載套件,將smax.cab加入網站,再於Html指定以下Code:
就可輕易的去操控印表機設定,免費版就有以下功能了,還可設定不跳出瀏覽直接Print:
當然最後還是沒有採用此Solutions,因在localhost跑得好好的,
未注意到如要放至Server上會無法使用,因需購買License,如是用免費版必須將Domain address寄給作者申請。
另一個套件叫Pazu,是大陸四方在線所開發的套件,他們的網站已有詳細的中文Sample Code了
一樣你可在localhost試用,如覺得不錯用要放在Server的話可再跟作者申請,再這就不詳細說明了http://www.4fang.net/apps/d4/Default.aspx?nodeid=4298
以上兩個套件完了半天都才發現要申請,故最後還是放棄了決定自己Survey,
其實要修改列印邊界,不外乎就是用到IE的ActiveX,故以上兩個套件也是IE Only
邊界設定都存在於Client端的登錄檔,故可用以下程式去修改:
var path = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
var _Reg = new ActiveXObject("WScript.Shell");
_Reg.RegWrite(path+"header",""); //頁首
_Reg.RegWrite(path+"footer",""); //頁尾
_Reg.RegWrite(path+"margin_bottom",parseFloat(10.0)/10/2.54); //登錄檔的單位為公吋
_Reg.RegWrite(path+"margin_left",parseFloat(10.0)/10/2.54);
_Reg.RegWrite(path+"margin_right",parseFloat(10.0)/10/2.54);
_Reg.RegWrite(path+"margin_top,parseFloat(10.0)/10/2.54);
因使用到ActiveX,故IE瀏覽器設定上需將此區域加入信任,
或至IE->網頁網路選項,將ActiveX調為啟用或提示:
如此在列印之前就能去將瀏覽器的邊界列印設定改掉~
但後來發現即使邊界設定一樣…不同印表機印出的結果也不一樣…
這就是另一段故事了…我必須針對不同印表機去測試出邊界數據來解決….T_____T