本方法不分語言(ASP,ASP.NET,JSP,PHP..)可以生成HTML的語言都可以使用。
其實很簡單只要你略懂 HTML,CSS 即可,打印的出來的效果(那就要看你自己了)個人認為一般的打印完全可以應付。
先給一個簡單實用的方式(可以打印多頁,控制分頁,隱藏非打印項目)
<!--語言無關 保存成 .HTML 看看-->
<html>
<head>
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<title>看看</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!--media=print 這個屬性可以在打印時有效-->
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
<style>
.tdp
{
border-bottom: 1 solid #000000;
border-left: 1 solid #000000;
border-right: 0 solid #ffffff;
border-top: 0 solid #ffffff;
}
.tabp
{
border-color: #000000 #000000 #000000 #000000;
border-style: solid;
border-top-width: 2px;
border-right-width: 2px;
border-bottom-width: 1px;
border-left-width: 1px;
}
.NOPRINT {
font-family: "宋體";
font-size: 9pt;
}
</style>
</head>
<body >
<center class="Noprint" >
<p>
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=頁面設置 onclick=document.all.WebBrowser.ExecWB(8,1)>
</p>
<p> <input type=button value=打印預覽 onclick=document.all.WebBrowser.ExecWB(7,1)>
<br/>
</p>
<hr align="center" width="90%" size="1" noshade>
</center>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td colspan="3" class="tdp">第1頁</td>
</tr>
<tr>
<td width="29%" class="tdp"> </td>
<td width="28%" class="tdp"> </td>
<td width="43%" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"> </td>
</tr>
<tr>
<td colspan="3" class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>這樣的報表</p>
<p>對一般的要求就夠了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
<!--分頁-->
<div class="PageNext"></div>
<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0" class="tabp">
<tr>
<td class="tdp">第2頁</td>
</tr>
<tr>
<td class="tdp">看到分頁了吧</td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"> </td>
</tr>
<tr>
<td class="tdp"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" class="tdp"><p>這樣的報表</p>
<p>對一般的要求就夠了。</p></td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
簡單懂得 HTML CSS 即可。
下面樣式只在打印時有用 <style media=print>
<style media=print>
.Noprint{display:none;}
.PageNext{page-break-after: always;}
</style>
WebBrowser 控件對象。只要是 win98 以上版本都有。
其實配合“分頁樣式表”,和 HTML表格 一般的打印都可以實現的。
如果想對 非Windows平台用戶使用。
請去掉下面這些:
<center class="Noprint" >
<p>
<!--最主要是這個-->
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0>
</OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=頁面設置 onclick=document.all.WebBrowser.ExecWB(8,1)>
</p>
<p> <input type=button value=打印預覽 onclick=document.all.WebBrowser.ExecWB(7,1)>
<br/>
</p>
<hr align="center" width="90%" size="1" noshade>
</center>
分頁是由 CSS中的 page-break-after的always屬性實現的
always就是在對象後設置一個分頁符。
//也許有些地方大家不太明白我解釋一下其實很簡單
。。。。。。。。。。。。。。。。。。
<!--media=print只有在打印中 有效-->
<style media=print>
<!--display:none 隱藏加上,上面的 media=print 就是在打印時隱藏-->
.Noprint{display:none;}
<!--分頁-->
.PageNext{page-break-after: always;}
</style>
.......
<!--網頁中分頁-->
<div class="PageNext"></div>
。。。。。。。。。。。。。。。。。。
================
《WEB 打印的相關技術分析》
文/謝康
做Web開發的人員一定都會面臨一個共同的難題,那就是打印。的確,相對於Windows桌面應用程序來講,Web應用程序的打印有種種限制,技術人員在項目開發過程中經常會遇到用戶這樣或那樣的需求. 做過桌面應用開發的人都會非常熟悉水晶報表、Active Report之類的報表控件,它們不僅有簡單靈活的設計界面,更具有非常強大的報表功能,能滿足各種報表的打印需求。而Web應用則因為其特殊的呈現方式,只能尋求其他的解決方案。現在我們來分析一下目前已經成形的Web打印方案:
現有的Web打印控制技術分成幾種方案:
一.自定義控件完成打印
利用IE 自帶的WebBrowser 控件實現打印
利用第三方控件實現打印
1、 自定義控件方式
自定義控件方式就是利用VB 或VC 等工具生成COM 組件,用定義好的打印格式來分析打印源文件從而實現打印。只有將生成的組件下載並注冊到客戶機上,才能實現在客戶端的
打印。
難點主要是定義打印格式、如何來分析打印源文件。現有的比較好的方法是利用XML 技術來全面的解決問題,利用XML 可以非常容易地定義打印目標的文本、表格等內容的格式。
但對程序員的開發要求高,難度比較大。
2、利用WebBrowser 實現Web打印
WebBrowser是IE 內置的浏覽器控件,無需用戶下載。本文檔所討論的是有關IE6.0 版本 的WebBrowser 控件技術內容。與其相關的技術要求有:打印文檔的生成、頁面設置、打印操作的實現等幾個環節。
(一)、打印文檔的生成
1、客戶端腳本方式
客戶端腳本分為VBScript、JavaScript、JScript 幾種腳本語言。在IE 下開發應用使用的語法為JScript 的語法,由於它和JavaScript 幾乎沒有什麼區別,所以也可以稱其為JavaScript(下面簡寫為JS)。一般情況下,主要使用JS 來實現DOM 文檔的分析,DOM 為微軟提 出的一種Web文檔模型,主要用來實現Web腳本編程。
利用JS 可以分析源頁面的內容,將欲打印的頁面元素提取出來,實現打印。通過分析源文檔的內容,可以生成打印目標文檔。
優點:客戶端獨立完成打印目標文檔的生成,減輕服務器負荷;
缺點:源文檔的分析操作復雜,並且源文檔中的打印內容要有約定;
2、服務器端程序方式
服務器端程序方式,主要是利用後台代碼從數據庫中讀取打印源,生成打印目標文檔。當的頁面生成時,還應適當考慮使用CSS 來實現強制分頁控制。
優點:可以生成內容非常的豐富的打印目標文檔,目標文檔的內容的可控性強。由於打印 內容是從數據庫中獲取的,所以生成操作相對簡單;
缺點:服務器端負載比較大;
(二)、頁面設置
頁面設置主要是指設置打印文檔的頁邊距、頁眉、頁腳、紙張等內容。頁面設置將直接影響到打印文檔版面的生成效果,所以它和打印文檔的生成有著密切的關系。比如:表格的