日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

网页打印javascript:window.print()

發布時間:2025/3/20 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网页打印javascript:window.print() 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在做B/S項目開發時。難免會遇到網頁打印問題!

可以用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打印,需要注意的情況如下:

必須將ie的internet選項的安全設置中對于沒有標記為安全的ActiveX控件進行...設置成提示或者啟用,否則會報錯,導致不可用。
如果在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.幾?,F在的最新版本已達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" border="0" 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();
}
}
?


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/duanwenzhi00/archive/2009/11/15/4812990.aspx

轉載于:https://blog.51cto.com/xiaosuncunzhang/584844

總結

以上是生活随笔為你收集整理的网页打印javascript:window.print()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。