頁面列印技術總結

來源:互聯網
上載者:User

一.概述
  對基於B/S架構的應用程式而言,用戶端的頁面列印一直是比較頭疼的問題,簡單的做法是:1.使用IE的列印功能;2.使用水晶報表。但以上兩種辦法,都有很大的局限性,很難實現特殊要求的排版和精確的定位,所以不能滿足一些特殊客戶的BT要求。為此,本人總結了自己在使用Web列印上的一點經驗,和大家分享。
  本文涉及以下技術:javascript、ActiveX、ASP.NET、GDI+。

二.基本架構
  首先,我們不能使用IE的列印功能,必須自己設計‘列印’按鈕。很多人習慣將‘列印’按鈕放在要列印的頁面上,列印時為了不把這個按鈕列印出來,採用辦法如下:1.列印前隱藏按鈕;2.列印;3.顯示按鈕。
我覺得這樣比較麻煩,所以我採用架構。一共有三個頁面:
1.main.htm :架構頁面,上面是列印按鈕,下面是要顯示的頁面。
2.header.htm :標題列,至少包含一個列印按鈕。
3.report.aspx :要列印的頁面,由使用者產生。

//main.htm
<html>
 <head>
  <title></title> 
 </head>
  <frameset rows="10%,90%" frameborder="0" border="0" frameSpacing="0">
  <frame id="header" name="header" src="Header.htm" noresize scrolling="no">
  <frame id="report" name="report" src="Report.aspx" noresize scrolling="auto">
 </frameset>
</html>

//header.htm
<html>
 <head> 
  <script id=clientEventHandlersJS language=javascript>
  <!--
  function btnPrint_onclick()
  {  
     parent.report.focus();
     parent.report.print(); 
  }
  //-->
  </script>
 </head>
 <body>
  <INPUT id="btnPrint" type="button" value="Print" name="Print" onclick="return btnPrint_onclick()"> 
 </body>
</html>

這樣,在點擊‘列印’按鈕時,將直接列印report.aspx頁面的內容,既簡單又直觀。

三.列印
 要完全控制列印,就必須由程式設定頁首、頁尾、頁面邊界。每個用戶端的IE設定都不盡相同,你可以要求你的客戶修改他們的列印設定為你指定的值,顯然這不現實。所以正確的做法是:
1.備份客戶列印版面設定;
2.設定頁首頁尾上下左右邊距為自己需要的值;
3.列印;
4.恢複原來的列印版面設定。
這裡用到一個叫ScriptX的控制項。你需要下載一個檔案:smsx.cab,下載地址:http://www.meadroid.com/scriptx/sxdownload.asp。這個地址並不能保證長期有效,你可以在搜尋引擎上搜尋‘ScriptX’以獲得更多相關資訊。

在“header.htm”中增加該控制項的引用:
<OBJECT id="factory" style="DISPLAY: none" codeBase="http://localhost/WebApplication1/smsx.cab#VVersion=6,3,434,12"
 classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext>

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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