iT邦幫忙

DAY 11
5

ASP.NET Web技術小技巧分享系列 第 11

[JavaScript]透過Script直接設定列印邊界

  • 分享至 

  • xImage
  •  

今天要分享在前端直接設定列印邊界的程式,之前的需求是列印的數據要直接印在紙本報表上
當然邊界的設定就很重要,故在列印前就用程式去指定
以免使用者去動過設定,格式整個就會跑掉
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


上一篇
[Html]Facebook分享連結卻與meta description不一致的情況
下一篇
[ASP.NET MVC]使用ELMAH監控網站時,一直發生action找不到之錯誤信
系列文
ASP.NET Web技術小技巧分享27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

我要留言

立即登入留言