asp.net 列印控制項使用方法

來源:互聯網
上載者:User

列印的效果及控制性雖然不是很好,但是也能勉強使用,應付一般的列印還是 可以的了。
代碼如下所示:
代碼 複製代碼 代碼如下://調用PrintControl.ExecWB(?,?)實現直接列印和預覽列印功能。(直接用系統提供的print()方法列印無法隱藏某些地區)
//preview:是否顯示預覽。null/false:不顯示,true:顯示
function printPage(preview)
{
try
{
var content=window.document.body.innerHTML;
var oricontent=content;
while(content.indexOf("{$printhide}")>=0) content=content.replace("{$printhide}","style='display:none'");
if(content.indexOf("ID=\"PrintControl\"")<0) content=content+"<OBJECT ID=\"PrintControl\" WIDTH=0 HEIGHT=0 CLASSID=\"CLSID:8856F961-340A-11D0-A96B-00C04FD705A2\"></OBJECT>";
window.document.body.innerHTML=content;
//PrintControl.ExecWB(7,1)預覽列印,(1,1)開啟,(4,1)另存新檔,(17,1)全選,(10,1)屬性,(6,1)列印,(6,6)直接列印,(8,1)版面設定
if(preview==null||preview==false) PrintControl.ExecWB(6,1);
else PrintControl.ExecWB(7,1); //OLECMDID_PRINT=7; OLECMDEXECOPT_DONTPROMPTUSER=6/OLECMDEXECOPT_PROMPTUSER=1
window.document.body.innerHTML=oricontent;
}
catch(ex){ alert("執行Javascript指令碼出錯。"); }
}
function printConten(preview, html)
{
try
{
var content=html;
var oricontent=window.document.body.innerHTML;
while(content.indexOf("{$printhide}")>=0) content=content.replace("{$printhide}","style='display:none'");
if(content.indexOf("ID=\"PrintControl\"")<0) content=content+"<OBJECT ID=\"PrintControl\" WIDTH=0 HEIGHT=0 CLASSID=\"CLSID:8856F961-340A-11D0-A96B-00C04FD705A2\"></OBJECT>";
window.document.body.innerHTML=content;
//PrintControl.ExecWB(7,1)預覽列印,(1,1)開啟,(4,1)另存新檔,(17,1)全選,(10,1)屬性,(6,1)列印,(6,6)直接列印,(8,1)版面設定
if(preview==null||preview==false) PrintControl.ExecWB(6,1);
else PrintControl.ExecWB(7,1); //OLECMDID_PRINT=7; OLECMDEXECOPT_DONTPROMPTUSER=6/OLECMDEXECOPT_PROMPTUSER=1
window.document.body.innerHTML=oricontent;
}
catch(ex){ alert("執行Javascript指令碼出錯。"); }
}

上面兩個函數放在一個Js檔案中,在頁面內容中通過應用該指令檔並調用進一步封裝的函數即可列印指定部分的內容: 複製代碼 代碼如下:<script language="javascript">
function Print(preview) {
var text = document.getElementById("content").innerHTML;
printConten(preview, text);
}

列印的效果大致如所示,如果列印的頁面在架構頁面中,那麼需要選定“僅列印選定架構”的選項。

採用此種方法,不需要安裝任何控制項,具有很好的相容優勢,不過出來的報表內容,好像控制起來會比較麻煩一些,特別對於一些報表方面的列印,需要輸出複雜的內容是,也有一定的缺陷,但總體來說,也是一個較好的選擇。

後來在需要做一些證件套打方面的工作,這個控制項就做不到了,因此需要一種方法或者控制項,能夠較好處理套打方面的事情。

無意間,發現一個比較好的列印控制項,支援各種格式的列印,還有我關心的證件套打功能,功能強大,使用也很簡單的,非常值得推薦。

控制項的相關地址:

控制項下載 http://www.jb51.net/codes/23956.html

控制項部落格介紹:http://blog.sina.com.cn/s/articlelist_1340389911_0_1.html

應用這個控制項,普通報表的列印效果如下所示:

上面兩個報表的列印其實都差不多,都是列印部分的HTML內容,不過後者看起來要好一點,而且提供很完善的報表功能設定。

代碼大致如下所示。
代碼

複製代碼 代碼如下:<script language="javascript">
function Print(preview) {
var text = document.getElementById("content").innerHTML;
printConten(preview, text);
}
</script>
<script language="javascript" src="http://www.cnblogs.com/Scripts/CheckActivX.js"></script>
<object id="LODOP" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0> </object>
<script language="javascript">
var LODOP = document.getElementById("LODOP"); //這行語句是為了符合DTD規範
CheckLodop();
</script>
<script language="javascript" type="text/javascript">
function Preview() {//預覽列印
CreateLicenseData();
LODOP.SET_SHOW_MODE("PREVIEW_IN_BROWSE", 1);
LODOP.PREVIEW();
};
function Setup() {//列印維護 給使用者調整位置
CreateLicenseData();
LODOP.PRINT_SETUP();
};
function Design() {//列印設計 開發人員設定內容和位置
CreateLicenseData();
LODOP.PRINT_DESIGN();
};
function CreateLicenseData() {
LODOP.PRINT_INIT("查詢報表");
LODOP.ADD_PRINT_HTM(20, 40, 610, 900, document.all("content").innerHTML);
LODOP.PREVIEW();
}
</script>

很多時候,我們也沒的內容,都是通過CSS來控制美觀的,所以有時候,我們列印部分HTML,沒有這些樣式的話,那麼出來的Table格式和字型,可能都會發生變化,不太好看。那麼就需要進行HTML的樣式設定。

如果給列印內容設定了樣式,那麼出來的介面效果就好很多了。


設定樣式的代碼如下所示。
代碼

複製代碼 代碼如下:<script language="javascript" type="text/javascript">
function Preview() {//預覽列印
CreateLicenseData();
LODOP.SET_SHOW_MODE("PREVIEW_IN_BROWSE", 1);
LODOP.PREVIEW();
};
function CreateLicenseData() {
LODOP.PRINT_INIT("申請處理單");
var strBodyStyle = "<link type='text/css' rel='stylesheet' href='http://www.cnblogs.com/Themes/Default/style.css' /><style><!--table { border:1;background-color: #CBCBCC } td {background-color:#FFFFFE;border: 1; } th { background-color:#F1F1F3;padding-left:5px;border:1}--></style>";
var strFormHtml = strBodyStyle + "<body>" + document.getElementById("content").innerHTML + "</body>";
LODOP.ADD_PRINT_HTM(20, 40, 610, 900, strFormHtml);
LODOP.PREVIEW();
}
</script>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.