天天看點

網頁列印代碼

網頁列印按鈕的源代碼:javascript:window.print();

可以用css控制,

@media print

.a {display:block}

.b {display:hidden}

好像是這樣。把你不想列印的部分class設為b

首先在網頁中添加:

      <OBJECT id="WebBrowser" height="0" width="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"

       VIEWASTEXT>

      </OBJECT>

然後就可以依次加入功能按鈕了:

<input οnclick="document.all.WebBrowser.ExecWB(6,1)" type="button" value="列印"> <input οnclick="document.all.WebBrowser.ExecWB(6,6)" type="button" value="直接列印">

      <input οnclick="document.all.WebBrowser.ExecWB(8,1)" type="button" value="頁面設定">

      <input οnclick="document.all.WebBrowser.ExecWB(7,1)" type="button" value="列印預覽">&nbsp;<INPUT type="button" value="關閉視窗" οnclick="javascript:window.close()">

将這兩塊東西放到<center class=noprint></center>就不會列印這些按鈕了。當然要定義noprint了:

<style media="print">.Noprint { DISPLAY: none }</style>隻要把不想列印的東西的css設定成noprint就可以了。

現在就實作了基本的web列印,需要注意的情況如下:

  1. 必須将ie的internet選項的安全設定中對于沒有标記為安全的ActiveX控件進行...設定成提示或者啟用,否則會報錯,導緻不可用。
  2. 如果在vs.net編輯環境下編輯該頁面,它經常自動的給object添加多餘的參數,有了這些東西,列印就會出錯,是以要記得最後儲存的時候删除它們。

為了簡便并且達到最好的效果,我們可以在一個頁面實作編輯和列印,這時候會需要很多的textbox,我們把它的css設定成.edittext

{

overflow-y:visible;

width: 100%;

border-top: none;

border-right: none;

border-bottom: none;

border-left: none;

}就可以實作在列印的時候不顯示邊框和multiline的textbox不顯示滾動條了。

還有一些小經驗就是在設定标格寬度的時候,對于A4紙張,橫打用920,豎打用640,效果最好。

相信用B/S方式做過應用的人都可能會遇到這樣一個問題,如何友善、美觀地實作報表列印。如果使用浏覽器的列印菜單列印的話,将把網頁上的一些無用的東西打到報表上,比如應用菜單等。因為選擇列印菜單列印網頁将會把網頁中的所有内容全部列印出來,如果你的應用有分幀則列印内容将包括各幀中的内容,而你實際要的内容隻是其中一部分。是以有很多應用就隻能把列印功能放到背景完成了。   針對這種情況,我們該怎麼辦?其實可以有多種方法實作網頁列印功能。

  一種方法就是使用專業的列印工具,如Crystal Reports(水晶報表)。用過Visual Studio 5.0的朋友肯定記得這個工具,不過那時的版本隻有4.幾。現在的最新版本已達9了,近幾個版本的水晶報表都支援WEB列印。最簡單的方法是先用水晶報表制作好模闆,然後使用ASP帶參數調用制作好的模闆即可。水晶報表在網頁上生成報表後,可以直接列印,也可以轉存為其它的比較通過的檔案如Excel檔案。使用水晶報表可以制作出非常漂亮的樣式,關鍵在你對水晶報表的開發能力上,但由于水晶報表價格較高,隻有當項目很賺錢時才買得起。

  第二種方法是購買第三方的網上列印控件,費用同水晶報表相比便宜,但效果性能到底如何則仁者見仁了。

  第三種方法是利用樣式表及JavaScript自定義函數實作。通過樣式表及JavaScript,實作網頁列印,效果也還可以。在此有一個執行個體請大家看看。下面是列印函數實作詳解:

<script language="JavaScript" type="text/JavaScript">

<!--

function DP() {

if (window.print)

{

var Div1 = document.all.Div1.innerHTML;

var Div2 = document.all.Div2.innerHTML;

// *****************************************************

// Div1、Div2即為你在列印的區域

// 這裡根據你要列印的哪些内容,從原顯示頁面中用

// <div id=Div1>Div1....</div><div id=Div2>Div2...</div>

// 等标示出來,要列印多少項目就标示多少

// ***************************************************** var css = '<style type="text/css" media=all>' +

'p { line-height: 120%}' +

'.ftitle { line-height: 120%; font-size: 18px; color: #000000}' +

'td { font-size: 10px; color: #000000}' +

'</style>' ;

// *****************************************************

// 定義列印用的CSS,具體你想列印出什麼樣的格式全看你自己

// 了,但要注意:如果此處有什麼同網頁中不一緻的,可能列印

// 出來的頁面同網頁格式、字型可能會有所不同

// *****************************************************

var body ='<table width="640" cellspacing="0" cellpadding="5">' +

' <tr> ' +

' <td class="fbody"> ' +

' <div align="center" class=ftitle>' + Div1 + '</div>' + Div2 +

' </td>' +

' </tr>' +

'</table>';

// ******************************************************

// 在此處重新設定的列印格式,根據你的列印要求,将原顯示的

// 網頁的DIV内容重新組合,可以根據你原來的表格内容,去掉

// 不要列印的,你也可以能下面定義的noprint忽略掉你不想打

// 印的東西,隻調用你要列印的内容,但這樣被忽略掉的地方将

// 列印出空,不是很美觀。表格寬度要同列印的紙張寬度比對。

// ******************************************************

document.body.innerHTML = '<center>' + css + body + '</center>';

// ******************************************************

// 重設document.body,列印文檔準備就緒

// ******************************************************

window.print();

window.history.go(0);

// ******************************************************

// 調用列印指令,列印目前視窗内容。當你列印時其實是一張新

// 的網頁了,但網頁檔案還是原先的。緊接着調用

// window.history.go(0),再回到列印前的頁面,效果相當不差

// ******************************************************

}

}

-->

</script>

<style>

@media print {

.noprint {display:none}

}

</style>

<!--//.noprint 定義了noprint,在以下不需要列印的地方加入 class="noprint"後,用window.print()列印就會忽略-->

  好了,一切就緒了,現在要做的就是調用DP函數,如果你将實作調用的按鈕設計在同一張網頁上,則直接調用即可;如果你用了分幀方法,實作調用的按鈕是在另一張網頁上,則在DP函數的第一行加入window.focus()指令,否則列印的隻是有按鈕的網頁。

  第四種方法,實作是一種取巧的方法。一樣還是通過調用window.print()實作,隻是将你要列印的内容專門生成一張網頁,而列印按鈕在另一幀上。假設報表網頁在mainFrame上,按鈕在topFrame上,按鈕調用PrintReports()函數,PrintReports()函數如下即可實作列印工作。

function PrintReports() //topFrame網頁中的函數

{

try

// *******************************************************

// 錯誤處理,如果在mainFrame中的網頁沒有DP函數則不列印

// *******************************************************

{

window.parent.frames("mainFrame").DP();

}

catch(e)

{

alert("no object to print!");

}

}

function DP() // mainFrame網頁中函數

{

window.focus();

if (window.print)

{

window.print();

}

}

WEB列印大全

1、控制"縱打"、 橫打”和“頁面的邊距。

(1)<script defer>

function SetPrintSettings() {

 // -- advanced features

 factory.printing.SetMarginMeasure(2) // measure margins in inches

 factory.SetPageRange(false, 1, 3) // need pages from 1 to 3

 factory.printing.printer = "HP DeskJet 870C"

 factory.printing.copies = 2

 factory.printing.collate = true

 factory.printing.paperSize = "A4"

 factory.printing.paperSource = "Manual feed"

 // -- basic features

 factory.printing.header = "This is MeadCo"

 factory.printing.footer = "Advanced Printing by ScriptX"

 factory.printing.portrait = false

 factory.printing.leftMargin = 1.0

 factory.printing.topMargin = 1.0

 factory.printing.rightMargin = 1.0

 factory.printing.bottomMargin = 1.0

}

</script>

(2)

<script language="javascript">

  function printsetup(){

  // 列印頁面設定

  wb.execwb(8,1);

  }

  function printpreview(){

  // 列印頁面預覽

    

  wb.execwb(7,1);

     

    

  }

  function printit()

  {

  if (confirm('确定列印嗎?')) {

  wb.execwb(6,6)

  }

  }

  </script>

</head>

<body>

<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"

height=0 id=wb name=wb width=0></OBJECT>

<input type=button name=button_print value="列印"

οnclick="javascript:printit()">

<input type=button name=button_setup value="列印頁面設定"

οnclick="javascript:printsetup();">

<input type=button name=button_show value="列印預覽"

οnclick="javascript:printpreview();">

<input type=button name=button_fh value="關閉"

οnclick="javascript:window.close();">

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

關于這個元件還有其他的用法,列舉如下:

WebBrowser.ExecWB(1,1) 打開

Web.ExecWB(2,1) 關閉現在所有的IE視窗,并打開一個新視窗

Web.ExecWB(4,1) 儲存網頁

Web.ExecWB(6,1) 列印

Web.ExecWB(7,1) 列印預覽

Web.ExecWB(8,1) 列印頁面設定

Web.ExecWB(10,1) 檢視頁面屬性

Web.ExecWB(15,1) 好像是撤銷,有待确認

Web.ExecWB(17,1) 全選

Web.ExecWB(22,1) 重新整理

Web.ExecWB(45,1) 關閉窗體無提示

2、分頁列印

<HTML>

<HEAD>

<STYLE>  

  P {page-break-after: always}

</STYLE>

</HEAD>

<BODY>

<%while not rs.eof%>

<P><%=rs(0)%></P>

<%rs.movenext%>

<%wend%>

</BODY>

</HTML>

3、ASP頁面列印時如何去掉頁面底部的路徑和頂端的頁碼編号

(1)ie的檔案-〉頁面設定-〉講裡面的頁眉和頁腳裡面的東西都去掉,列印就不出來了。

(2)<HTML>

<HEAD>

<TITLE> New Document </TITLE>

<META NAME="Generator" CONTENT="EditPlus">

<META NAME="Author" CONTENT="YC">

<script language="VBScript">

dim hkey_root,hkey_path,hkey_key

hkey_root="HKEY_CURRENT_USER"

hkey_path="/Software/Microsoft/Internet Explorer/PageSetup"

'//設定網頁列印的頁眉頁腳為空

function pagesetup_null()

  on error resume next

  Set RegWsh = CreateObject("WScript.Shell")

  hkey_key="/header"  

  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""

  hkey_key="/footer"

  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,""

end function

'//設定網頁列印的頁眉頁腳為預設值

function pagesetup_default()

  on error resume next

  Set RegWsh = CreateObject("WScript.Shell")

  hkey_key="/header"  

  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&w&b頁碼,&p/&P"

  hkey_key="/footer"

  RegWsh.RegWrite hkey_root+hkey_path+hkey_key,"&u&b&d"

end function

</script>

</HEAD>

<BODY>

<br/>

<br/>

<br/>

<br/>

<br/>

<br/><p align=center>

<input type="button" value="清空頁碼" οnclick=pagesetup_null()> <input type="button" value="恢複頁嗎" οnclick=pagesetup_default()><br/>

</p>

</BODY>

</HTML>

4、浮動幀列印

<SCRIPT LANGUAGE=javascript>

function button1_onclick() {

  var odoc=window.iframe1.document;

  var r=odoc.body.createTextRange();

  var stxt=r.htmlText;

  alert(stxt)

  var pwin=window.open("","print");

  pwin.document.write(stxt);

  pwin.print();

}

</SCRIPT>

4、用FileSystem元件實作WEB應用中的本地特定列印

<script Language=VBScript>

function print_onclick //列印函數

dim label

label=document.printinfo.label.value //獲得HTML頁面的資料

set objfs=CreateObject("Scripting.FileSystemObject") //建立FileSystem元件對象的執行個體

set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立與列印機的連接配接

objprinter.Writeline("__________________________________") //輸出列印的内容

objprinter.Writeline("| |")

objprinter.Writeline("| 您列印的資料是:"&label& " |”)

objprinter.Writeline("| |")

objprinter.Writeline("|_________________________________|")

objprinter.close //斷開與列印機的連接配接

set objprinter=nothing

set objfs=nothing // 關閉FileSystem元件對象

end function

</script>

伺服器端腳本:

<%………

set conn=server.CreateObject ("adodb.connection")

conn.Open "DSN=name;UID=XXXX;PWD=XXXX;"

set rs=server.CreateObject("adodb.recordset")

rs.Open(“select ……”),conn,1,1

……….%> //與資料庫進行互動

HTML頁面編碼:

<HTML>

………

<FORM ID=printinfo NAME="printinfo" >

<INPUT type="button" value="列印>>" id=print name=print > //調用列印函數

<INPUT type=hidden id=text1 name=label value=<%=………%>> //儲存伺服器端傳來的資料

………

</HTML>

繼續閱讀