8AV国产精品爽爽Va在线观看_国产精品视频免费播放_综合精品综合一区二区_蜜臀福利视频免费观看

品優(yōu)網(wǎng)絡(luò) 十六年(2003-2018)專注
網(wǎng)站建設(shè)頁(yè)面打印實(shí)現(xiàn)方式
日期:2014-12-12 作者:admin 來(lái)源: 瀏覽次數(shù):0 網(wǎng)友評(píng)論 0

企業(yè)網(wǎng)站推廣1

WEB打印實(shí)例教程
 做Web開(kāi)發(fā)的人員一定都會(huì)面臨一個(gè)共同的難題,那就是打印。的確,相對(duì)于Windows桌面應(yīng)用程序來(lái)講,Web應(yīng)用程序的打印有種種限制,技術(shù)人員在項(xiàng)目開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)遇到用戶這樣或那樣的需求. 做過(guò)桌面應(yīng)用開(kāi)發(fā)的人都會(huì)非常熟悉水晶報(bào)表、Active Report之類的報(bào)表控件,它們不**簡(jiǎn)單靈活的設(shè)計(jì)界面,更具有非常強(qiáng)大的報(bào)表功能,能滿足各種報(bào)表的打印需求。而Web應(yīng)用則因?yàn)槠涮厥獾某尸F(xiàn)方式,只能尋求其他的解決方案。現(xiàn)在我們來(lái)分析一下目前已經(jīng)成形的Web打印方案:
  現(xiàn)有的Web打印控制技術(shù)分成幾種方案:
  一.自定義控件完成打印
  利用IE 自帶的WebBrowser 控件實(shí)現(xiàn)打印
  利用第三方控件實(shí)現(xiàn)打印
  1、自定義控件方式
  自定義控件方式就是利用VB 或VC 等工具生成COM 組件,用定義好的打印格式來(lái)分析打印源文件從而實(shí)現(xiàn)打印。只有將生成的組件下載并注冊(cè)到客戶機(jī)上,才能實(shí)現(xiàn)在客戶端的
打印。
  難點(diǎn)主要是定義打印格式、如何來(lái)分析打印源文件?,F(xiàn)有的比較好的方法是利用XML 技術(shù)來(lái)全面的解決問(wèn)題,利用XML 可以非常容易地定義打印目標(biāo)的文本、表格等內(nèi)容的格式。
但對(duì)程序員的開(kāi)發(fā)要求高,難度比較大。
  2、利用WebBrowser 實(shí)現(xiàn)Web打印
  WebBrowser是IE 內(nèi)置的瀏覽器控件,無(wú)需用戶下載。本文檔所討論的是有關(guān)IE6.0 版本 的WebBrowser 控件技術(shù)內(nèi)容。與其相關(guān)的技術(shù)要求有:打印文檔的生成、頁(yè)面設(shè)置、打印操作的實(shí)現(xiàn)等幾個(gè)環(huán)節(jié)。
 ?。ㄒ唬?、打印文檔的生成
  1、客戶端腳本方式
  客戶端腳本分為VBScript、JavaScript、JScript 幾種腳本語(yǔ)言。在IE 下開(kāi)發(fā)應(yīng)用使用的語(yǔ)法為JScript 的語(yǔ)法,由于它和JavaScript 幾乎沒(méi)有什么區(qū)別,所以也可以稱其為JavaScript(下面簡(jiǎn)寫(xiě)為JS)。一般情況下,主要使用JS 來(lái)實(shí)現(xiàn)DOM 文檔的分析,DOM 為微軟提出的一種Web文檔模型,主要用來(lái)實(shí)現(xiàn)Web腳本編程。
  利用JS 可以分析源頁(yè)面的內(nèi)容,將欲打印的頁(yè)面元素提取出來(lái),實(shí)現(xiàn)打印。通過(guò)分析源文檔的內(nèi)容,可以生成打印目標(biāo)文檔。
  優(yōu)點(diǎn):客戶端前幾立完成打印目標(biāo)文檔的生成,減輕服務(wù)器負(fù)荷;
  缺點(diǎn):源文檔的分析操作復(fù)雜,并且源文檔中的打印內(nèi)容要有約定;
  2、服務(wù)器端程序方式
  服務(wù)器端程序方式,主要是利用后臺(tái)代碼從數(shù)據(jù)庫(kù)中讀取打印源,生成打印目標(biāo)文檔。當(dāng)?shù)捻?yè)面生成時(shí),還應(yīng)適當(dāng)考慮使用CSS 來(lái)實(shí)現(xiàn)強(qiáng)制分頁(yè)控制。
  優(yōu)點(diǎn):可以生成內(nèi)容非常的豐富的打印目標(biāo)文檔,目標(biāo)文檔的內(nèi)容的可控性強(qiáng)。由于打印內(nèi)容是從數(shù)據(jù)庫(kù)中獲取的,所以生成操作相對(duì)簡(jiǎn)單;
  缺點(diǎn):服務(wù)器端負(fù)載比較大;
  (二)、頁(yè)面設(shè)置
  頁(yè)面設(shè)置主要是指設(shè)置打印文檔的頁(yè)邊距、頁(yè)眉、頁(yè)腳、紙張等內(nèi)容。頁(yè)面設(shè)置將直接影響到打印文檔版面的生成效果,所以它和打印文檔的生成有著密切的關(guān)系。比如:表格的
行數(shù)、大小、位置、字體的大小等。
  現(xiàn)有的技術(shù)是利用IE6.0 內(nèi)置的打印模板方式來(lái)控制頁(yè)面設(shè)置,其可以對(duì)打印目標(biāo)文檔產(chǎn)生非常大的影響。打印模板可以控制頁(yè)邊距、頁(yè)眉、頁(yè)腳、奇偶頁(yè)等內(nèi)容,并可以將用戶的設(shè)置取得,還可以將設(shè)置發(fā)送到服務(wù)器端。
  打印模板技術(shù)可以自定預(yù)覽窗口和打印格式,更大限度地影響目標(biāo)文檔和打印效果。
  (三)、打印操作的實(shí)現(xiàn)
  此功能的實(shí)現(xiàn)主要是利用WebBrowser控件的函數(shù)接口來(lái)實(shí)現(xiàn)打印、打印預(yù)覽(默認(rèn)的)、
  頁(yè)面設(shè)置(默認(rèn)的)。
<object ID='WebBrowser1' WIDTH=0 HEIGHT=0
CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD70**2'>
//打印
WebBrowser1.ExecWB(6,1);
//打印設(shè)置
WebBrowser1.ExecWB(8,1);
//打印預(yù)覽
WebBrowser1.ExecWB(7,1);
3、一個(gè)實(shí)例項(xiàng)目采用的打印方案
服務(wù)器端程序方式、打印預(yù)覽接口調(diào)用,下面為例, 主要參考項(xiàng)目中的:
pageErrorPrint.aspx.vb 文件
主調(diào)用頁(yè)
function PrintPage(iPageIndex,strQuery)
{
var strURL;
strURL = "PageErrorPrint.aspx?PageIndex=" + iPageIndex + "&QueryString=" +
strQuery;
winPrint=window.open(strURL,"","left=2000,top=2000,fullscreen=3");
}
打印頁(yè)HTML 源中的預(yù)覽控制
<SCRIPT language="javascript">
document.write("<object ID='WebBrowser' WIDTH=0 HEIGHT=0
CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD70**2'></object>");
WebBrowser.ExecWB(7,1);
window.opener=null;
window.close();
</SCRIPT>
程序頭
'首先聲明表格容器
Protected WithEvents phContainer As System.Web.UI.WebControls.PlaceHolder
'每個(gè)表格中的記錄數(shù)量
Private Const ItemPerTable As Integer = 20
關(guān)鍵的實(shí)現(xiàn)部分
'創(chuàng)建一個(gè)符合打印要求的表格
tabPagePrint = NewPrintTable()
'將表頭添加到此表格中
Call AddTableTitle(tabPagePrint)
'初始化記錄器
i = 0
iItemIndex = iStartPoint
For Each clsItem In clsAllData.ErrorCollection
If i > 0 And i Mod ItemPerTable = 0 Then
'添加表格控件到頁(yè)面中
phContainer.Controls.Add(tabPagePrint)
'在頁(yè)面中添加一個(gè)換行符
Call AddPageBreak()
'創(chuàng)建新一輪的表格
tabPagePrint = NewPrintTable()
Call AddTableTitle(tabPagePrint)
End If
'將記錄添加到表格中
Call AddItemToTable(iItemIndex, tabPagePrint, clsItem)
iItemIndex = iItemIndex + 1
i = i + 1
Next
'添加表格控件到頁(yè)面中
phContainer.Controls.Add(tabPagePrint)
支持函數(shù)
'功能:添加頁(yè)的換行符
Private Sub AddPageBreak()
Dim ltBreak As LiteralControl
ltBreak = New LiteralControl("<p style='page-break-before:always'>")
phContainer.Controls.Add(ltBreak)
End Sub
  二、利用IE自身打印
  這種方式比較簡(jiǎn)單,也常用的打印方式,只需要將報(bào)表頁(yè)面設(shè)計(jì)好,用戶通過(guò)IE菜單中的打印功能完成打印。優(yōu)點(diǎn)是簡(jiǎn)單,容易實(shí)現(xiàn),缺點(diǎn)是不靈活,不能控制分頁(yè),不能控制好頁(yè)眉和頁(yè)腳。
  三、將報(bào)表導(dǎo)出成Word,Excel或PDF形式打印
  這種方式需要將頁(yè)面導(dǎo)出成Office文檔或pdf,更低的要求是客戶端已經(jīng)安裝用以打開(kāi)Word、Excel或Pdf文檔的軟件。這種方式可以通過(guò)水晶報(bào)表組件或其他一些第三方控件非常容易地實(shí)現(xiàn)。導(dǎo)出成Pdf形式后打印質(zhì)量和效果都很好,導(dǎo)出成Word或Excel后用戶可以自定義打印的內(nèi)容和格式。
  總之,現(xiàn)有的打印方案各有所長(zhǎng),在開(kāi)發(fā)過(guò)程中應(yīng)根據(jù)用戶的需求作選擇,利用IE打印簡(jiǎn)單,容易實(shí)現(xiàn),在用戶需求簡(jiǎn)單或打印內(nèi)容較少的情況下采用此方案比較適宜。利用自定義控件打印可以實(shí)現(xiàn)完全自定義,但需要較高的技術(shù)要求和開(kāi)發(fā)周期。利用導(dǎo)出的方式則可以滿足用戶需要一點(diǎn)自定義或打印內(nèi)容有多頁(yè)的需求。
-------------------------------------------------------------
1、控制"縱打"、橫打”和“頁(yè)面的邊距。 
(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(){ 
  // 打印頁(yè)面設(shè)置 
  wb.execwb(8,1); 
  } 
  function printpreview(){ 
  // 打印頁(yè)面預(yù)覽 
     
  wb.execwb(7,1); 
      
     
  } 
  function printit() 
  { 
  if (confirm('確定打印嗎?')) { 
  wb.execwb(6,6) 
  } 
  } 
  </script> 
</head> 
<body> 
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD70**2" 
height=0 id=wb name=wb width=0></OBJECT> 
<input type=button name=button_print value="打印" 
onclick="javascript:printit()"> 
<input type=button name=button_setup value="打印頁(yè)面設(shè)置" 
onclick="javascript:printsetup();"> 
<input type=button name=button_show value="打印預(yù)覽" 
onclick="javascript:printpreview();"> 
<input type=button name=button_fh value="關(guān)閉" 
onclick="javascript:window.close();"> 
------------------------------------------------ 
關(guān)于這個(gè)組件還有其他的用法,列舉如下: 
WebBrowser.ExecWB(1,1) 打開(kāi) 
Web.ExecWB(2,1) 關(guān)閉現(xiàn)在所有的IE窗口,并打開(kāi)一個(gè)新窗口 
Web.ExecWB(4,1) 保存網(wǎng)頁(yè) 
Web.ExecWB(6,1) 打印 
Web.ExecWB(7,1) 打印預(yù)覽 
Web.ExecWB(8,1) 打印頁(yè)面設(shè)置 
Web.ExecWB(10,1) 查看頁(yè)面屬性 
Web.ExecWB(15,1) 好像是撤銷,有待確認(rèn) 
Web.ExecWB(17,1) 全選 
Web.ExecWB(22,1) 刷新 
Web.ExecWB(45,1) 關(guān)閉窗體無(wú)提示 
2、分頁(yè)打印 
<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頁(yè)面打印時(shí)如何去掉頁(yè)面底部的路徑和更端的頁(yè)碼編號(hào) 
(1)ie的文件-〉頁(yè)面設(shè)置-〉講里面的頁(yè)眉和頁(yè)腳里面的東西都去掉,打印就不出來(lái)了。 
(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" 
'//設(shè)置網(wǎng)頁(yè)打印的頁(yè)眉頁(yè)腳為空 
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 
'//設(shè)置網(wǎng)頁(yè)打印的頁(yè)眉頁(yè)腳為默認(rèn)值 
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頁(yè)碼,&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="清空頁(yè)碼" onclick=pagesetup_null()> <input type="button" value="恢復(fù)頁(yè)嗎" onclick=pagesetup_default()><br/> 
</p> 
</BODY> 
</HTML> 
4、浮動(dòng)幀打印 
<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組件實(shí)現(xiàn)WEB應(yīng)用中的本地特定打印 
<script Language=VBScript> 
function print_onclick //打印函數(shù) 
dim label 
label=document.printinfo.label.value //獲得HTML頁(yè)面的數(shù)據(jù) 
set objfs=CreateObject("Scripting.FileSystemObject") //創(chuàng)建FileSystem組件對(duì)象的實(shí)例 
set objprinter=objfs.CreateTextFile ("LPT1:",true) //建立與打印機(jī)的連接 
objprinter.Writeline("__________________________________") //輸出打印的內(nèi)容 
objprinter.Writeline("| |") 
objprinter.Writeline("| 您打印的數(shù)據(jù)是:"&label& " |”) 
objprinter.Writeline("| |") 
objprinter.Writeline("|_________________________________|") 
objprinter.close //斷開(kāi)與打印機(jī)的連接 
set objprinter=nothing 
set objfs=nothing // 關(guān)閉FileSystem組件對(duì)象 
end function 
</script> 
服務(wù)器端腳本: 
<%……… 
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 
……….%> //與數(shù)據(jù)庫(kù)進(jìn)行交互 
HTML頁(yè)面編碼: 
<HTML> 
……… 
<FORM ID=printinfo NAME="printinfo" > 
<INPUT type="button" value="打印>>" id=print name=print > //調(diào)用打印函數(shù) 
<INPUT type=hidden id=text1 name=label value=<%=………%>> //保存服務(wù)器端傳來(lái)的數(shù)據(jù) 
……… 
</HTML>

網(wǎng)站建設(shè)頁(yè)面打印實(shí)現(xiàn)方式,希望能與大家多多交流,謝謝!

企業(yè)網(wǎng)站推廣2

查看更多寧波網(wǎng)站制作公司打印網(wǎng)站建設(shè)頁(yè)面

寧波網(wǎng)站建設(shè) (http://www.sdjianlida.com/) 版權(quán)與免責(zé)聲明
    1、凡本網(wǎng)注明“來(lái)源:寧波品優(yōu)網(wǎng)絡(luò)”字樣的所有作品,版權(quán)均屬于浙江省寧波海曙品優(yōu)網(wǎng)絡(luò)技術(shù)有限公司,如需轉(zhuǎn)載、摘編或利用其它方式使用上述作品,請(qǐng)與本網(wǎng)聯(lián)系。
    2、凡本網(wǎng)注明“來(lái)源:XXX(非寧波品優(yōu)網(wǎng)絡(luò))”的作品,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。寧波網(wǎng)站建設(shè)的轉(zhuǎn)載僅為信息的廣泛傳播,如有侵權(quán)請(qǐng)及時(shí)告之刪除。
返回:寧波網(wǎng)站制作公司