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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距

發(fā)布時(shí)間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、控制"縱打"、 橫打”和“頁(yè)面的邊距
(1)
<object? id="factory"? style="display:none"? viewastext? classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"?
codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"></object>
<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-00C04FD705A2"

height=0 id=wb name=wb width=0></OBJECT>
<input type=button name=button_print value="打印"

οnclick="javascriptrintit()">
<input type=button name=button_setup value="打印頁(yè)面設(shè)置"

οnclick="javascriptrintsetup();">
<input type=button name=button_show value="打印預(yù)覽"

οnclick="javascriptrintpreview();">
<input type=button name=button_fh value="關(guān)閉"

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

------------------------------------------------
關(guān)于這個(gè)組件還有其他的用法,列舉如下:
WebBrowser.ExecWB(1,1) 打開
Web.ExecWB(2,1) 關(guān)閉現(xiàn)在所有的IE窗口,并打開一個(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è)碼" οnclick=pagesetup_null()> <input type="button" value="恢復(fù)頁(yè)嗎" οnclick=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.document.close();
??? pwin.print();
}
</SCRIPT>
5、用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 //斷開與打印機(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>


?
這個(gè)是調(diào)用WORD,進(jìn)行打印
在<head></head>之間加入如下代碼;
<OBJECT Classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=WB width=0></OBJECT>
<script language=javascript>
function doPrintSetup(){
WB.ExecWB(8,1)
}
function doPrintPreview(){
WB.ExecWB(7,1)
}
</script>

在<body>中調(diào)用:
<input type=button name=button1 value="打印設(shè)置" οnclick="return doPrintSetup()">
<input type=button name=button2 value="打印預(yù)覽" οnclick="return doPrintPreview()">
<input type=button name=button3 value="打印本頁(yè)" οnclick="javascriptrint()">

6、設(shè)置不想打印的部分
<style>
@media print{
.xx {display:none}
}
</style>
<table width="600" class="xx" border="0" cellspacing="0" cellpadding="0">
????????????? <tr>
??????????????? <td height="60" align="center">不想打印的表格</td>
????????????? </tr>?
</table>
7、利用word在客戶端打印web頁(yè)面

以前在asp中也碰到過(guò)實(shí)現(xiàn)在瀏覽器中打印的問(wèn)題,特別是用局域網(wǎng)中的一些應(yīng)用,以前的實(shí)現(xiàn)定義一個(gè)打印開始的標(biāo)記,和一個(gè)結(jié)束的標(biāo)記,然后調(diào)用window.print()方法,還有涉及在使用frame時(shí)候的打印問(wèn)題,在msdn的文檔中有關(guān)于這些的比較詳細(xì)的介紹,但是,控制起來(lái)都比較的麻煩,而且對(duì)與打印比較精確的控制都比較難以實(shí)現(xiàn),有很多的朋友也碰到過(guò)這個(gè)問(wèn)題,最近讀了一片文章,關(guān)于在web中的打印的實(shí)現(xiàn)(csdn),稍作修改,貼了出來(lái),供大家參考一下,希望對(duì)大家有所幫助。
可以調(diào)用客戶端的word進(jìn)行打印前提是客戶端必須安裝word.
方法如下:
<%
Response.ContentType = "application/msword"
response.AddHeader "content-disposition", "inline; filename=report.doc"
%>
當(dāng)把,一樣的內(nèi)容添加到,asp的上面時(shí)候,會(huì)在客戶端自動(dòng)調(diào)用word打開當(dāng)前的文檔,不過(guò)不要忘記把,response.buffer的屬性設(shè)定為false。

8、在WEB環(huán)境下打印報(bào)表的crystal的解決方案的實(shí)例

<%@ LANGUAGE="VBSCRIPT" %>
<%
' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
' 從ADO Recordset直接生成報(bào)表
' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
'
' 概念:
'
' 這個(gè)應(yīng)用被設(shè)計(jì)成演示怎樣從ADO Recordset生成報(bào)表。我們首先建立ADO Connection和
' Recordset對(duì)象,然后用SQL語(yǔ)句從數(shù)據(jù)庫(kù)中生成一個(gè)記錄集。然后我們建立一個(gè)Crystal
' Reports對(duì)象,并把這個(gè)這個(gè)對(duì)象指向ADO recordset。最后我們將Crystal Reports
' Smart Viewer送到客戶端顯示這個(gè)報(bào)表。

' 第一步:建立ADO Connection and Recordset

' 一個(gè)ADO的數(shù)據(jù)庫(kù)連接就是通過(guò)你已經(jīng)存在的ODBC數(shù)據(jù)源(DSN)從象ASP這樣的應(yīng)用中來(lái)訪問(wèn)
' 數(shù)據(jù)的連接。為了達(dá)到這個(gè)例子的目的,我們將使用到用一個(gè)叫做"Xtreme Sample Data"的
' 連到Access數(shù)據(jù)庫(kù)Xtreme.mdb系統(tǒng)DSN

' 建立ADO數(shù)據(jù)庫(kù)連接:

Set oConn = Server.CreateObject("ADODB.Connection")

'這里建立叫做"oConn"的ADO connection,我們將用這個(gè)ADO connection對(duì)象連接到上述的DSN

'用 ADO connection 必須先要打開它:

oConn.Open("Xtreme Sample Database")

'這里打開我們的ODBC的數(shù)據(jù)源,這個(gè)數(shù)據(jù)源指向Access數(shù)據(jù)庫(kù)Xtreme.mdb

'現(xiàn)在我們必須建立一個(gè)RecordSet對(duì)象:

set session("oRs") = Server.CreateObject("ADODB.Recordset")

'在上面我們建立了一個(gè)session("oRs"). 這個(gè)session中存放一個(gè)RecordSet對(duì)象
'將要包含用SQL語(yǔ)句返回的數(shù)據(jù)

'定義和生成 recordset:

session("oRs").ActiveConnection = oConn
'定義這個(gè)recordset將要使用的Connection 對(duì)象

session("oRs").Open "SELECT [Product ID], [Product Name] FROM Product"

'用SQL語(yǔ)句從Xtreme.mdb庫(kù)的"Product"表中取出兩個(gè)字段

'===================================================================================
'建立Crystal Reports 對(duì)象
'===================================================================================
'你可能注意到,Crystal Reports對(duì)象被設(shè)為session,這是因?yàn)橐呀?jīng)需求就會(huì)被一個(gè)叫做
'"rptserver.asp"的ASP處理,為了讓rptserver.asp能非常容易地訪問(wèn)Crystal Report對(duì)象,
'我們把這些對(duì)象都設(shè)為session。這樣任何ASP頁(yè)都運(yùn)行在這個(gè)session中,都能夠直接訪問(wèn)這些對(duì)象

reportname = "ADORecordset.rpt"

'這里建立一個(gè)字符串變量,指向Crystal Report文件(.rpt file),再用這段代碼的時(shí)候
'換成你的Crystal Report文件名。

'建立APPLICATION 對(duì)象
If Not IsObject (session("oApp")) Then
Set session("oApp") = Server.CreateObject("CrystalRuntime.Application")
End If

'這個(gè)"if/end if" 結(jié)構(gòu)用來(lái)每個(gè)session只建立一次 Crystal Reports Application對(duì)象o
'建立application對(duì)象 - session("oApp"),將Crystal Report Design Component
'automation server (craxdrt.dll)載入內(nèi)存。
'
'我們建立session變量是為了再asp session過(guò)程中都使用它們.這樣可以減少將craxdrt.dll
'載入和卸載的系統(tǒng)開銷。在一個(gè)session中一旦建立了一個(gè)application對(duì)象我們就可以不必
'重建對(duì)象運(yùn)行更多的報(bào)表 。

' 建立REPORT 對(duì)象
'
'這個(gè)REPORT 對(duì)象被Application的OpenReport方法建立

Path = Request.ServerVariables("PATH_TRANSLATED")
While (Right(Path, 1) <> "/" And Len(Path) <> 0)
iLen = Len(Path) - 1
Path = Left(Path, iLen)
Wend
response.Write path
'這個(gè)"While/Wend" 循環(huán)被用來(lái)將當(dāng)前文件從虛擬路徑(eg: http://Domain/Dir)轉(zhuǎn)換成Crystal
' Report file的物理路徑(eg: C:/)

'打開REPORT (先清除以前的任何對(duì)象)

If IsObject(session("oRpt")) then
Set session("oRpt") = nothing
End if

On error resume next

Set session("oRpt") = session("oApp").OpenReport(path & reportname, 1)
'這里用"PATH" 和 "reportname"變量計(jì)算出Crystal Report file的物理路徑, 并打開它。

If Err.Number <> 0 Then
Response.Write "Error Occurred creating Report Object: " & Err.Description
Set Session("oRpt") = nothing
Set Session("oApp") = nothing
Session.Abandon
Response.End
End If

'這個(gè) On erro resume next 塊檢查在建立report對(duì)象時(shí)出現(xiàn)的任何錯(cuò)誤,我們正明確的捕獲任何
'錯(cuò)誤如果視圖超過(guò)許可協(xié)議規(guī)定的最大并發(fā)用戶數(shù)。

'注意,我們并不只建立一次report對(duì)象。這是因?yàn)橛辛薃SP session 你可以處理更多的超過(guò)一個(gè)報(bào)表
' rptserver.asp將僅僅處理一個(gè)叫session("oRpt")的report對(duì)象。因此,你如果希望處理多個(gè)報(bào)表
'的話,就要建立一個(gè)新的session("oRpt")對(duì)象。

session("oRpt").MorePrintEngineErrorMessages = False
session("oRpt").EnableParameterPrompting = False

'這里不允許錯(cuò)誤報(bào)告機(jī)制,包括Crystal Report Design Component automation server (craxdrt.dll)
'內(nèi)建的錯(cuò)誤報(bào)告,這是因?yàn)閮蓚€(gè)原因:
'1. 打印引擎是在Web Server上執(zhí)行的, 所以任何錯(cuò)誤信息都將被顯示在服務(wù)端,如果在服務(wù)端報(bào)告出錯(cuò)了,
' 打印引擎將停止運(yùn)作,你的應(yīng)用將被“掛起”
'2. rptserver.asp 已經(jīng)有一些錯(cuò)誤處理邏輯在里面了,可以捕獲任何非致命錯(cuò)誤,并顯示在客戶端。
'
'**重要** 即使我們禁止了服務(wù)端引擎的錯(cuò)誤處理,但是致命錯(cuò)誤還是會(huì)在Web Server服務(wù)端被捕獲,并
'顯示出錯(cuò)誤提示對(duì)話框。所以我們建議,你在"World Wide Web Publishing" service (IIS service)設(shè)置
'"Allow Service to Interact with Desktop"選項(xiàng)。這樣如果你的ASP應(yīng)用死了,你將能看到錯(cuò)誤提示。

'======================================================================================
'======================================================================================

'現(xiàn)在我們必須告訴report在ADO recordset中的數(shù)據(jù)

'report建立在動(dòng)態(tài)的ADO recordset的基礎(chǔ),我們必須基于我們建立的recordset來(lái)建立report
'然后在運(yùn)行時(shí)我們告訴report數(shù)據(jù)在ADO Record set中。report通常依靠數(shù)據(jù)庫(kù)結(jié)構(gòu)文件
'(ADORecordset.ttx)建立,這個(gè).ttx文件包含recordset的結(jié)構(gòu),不包含實(shí)際數(shù)據(jù)。

'一個(gè)Crystal Report完全依賴將要使用的Report的數(shù)據(jù)結(jié)構(gòu),因此在運(yùn)行時(shí)你的數(shù)據(jù)庫(kù)結(jié)構(gòu)文件(ttx file)
'或真實(shí)反應(yīng)ADO recordset包含的數(shù)據(jù)的DSN是十分重要的

session("oRpt").DiscardSavedData
set Database = session("oRpt").Database
'實(shí)例化report用到的數(shù)據(jù)庫(kù)

set Tables = Database.Tables
'實(shí)例化數(shù)據(jù)庫(kù)對(duì)象中的表

set Table1 = Tables.Item(1)
'實(shí)例化第一張表,在這個(gè)實(shí)例中這個(gè)表對(duì)象指向ADORecordset.ttx文件

Table1.SetPrivateData 3, session("oRs")

'"SetPrivateData"告訴report現(xiàn)在數(shù)據(jù)源是 recordset,現(xiàn)在report將要顯示的數(shù)據(jù)包含在session("oRs")中
'如果你的report中包含子報(bào)表將提供不同的recordset來(lái)指向子報(bào)表的數(shù)據(jù)
'
'====================================================================================
'重新得到記錄和建立"Page on Demand" Engine Object
'====================================================================================

On Error Resume Next
session("oRpt").ReadRecords

If Err.Number <> 0 Then
Response.Write "Error Occurred Reading Records: " & Err.Description
Set Session("oRpt") = nothing
Set Session("oApp") = nothing
Session.Abandon
Response.End
Else
If IsObject(session("oPageEngine")) Then
set session("oPageEngine") = nothing
End If
set session("oPageEngine") = session("oRpt").PageEngine
End If

' 實(shí)例化 CRYSTAL REPORTS SMART VIEWER
'
'在ASP環(huán)境中使用Crystal Reports automation server, 我們用相同的頁(yè)來(lái)通過(guò)Crystal Web Report Server調(diào)用
'"Smart Viewers"
'有四個(gè) Crystal Reports Smart Viewers:
'
'1. ActiveX Smart Viewer
'2. Java Smart Viewer
'3. HTML Frame Smart Viewer
'4. HTML Page Smart Viewer
'
'你使用的Smart Viewer將與你數(shù)用的瀏覽器兼容的,例如你將不會(huì)使用Java viewer如果你的瀏覽器
'不支持Java applets。為此,在這個(gè)DEMO中,我們已經(jīng)選擇定義一個(gè)viewer,你可以通過(guò)代碼決定
'提出要求的瀏覽器的支持兼容性,無(wú)論如何,這個(gè)功能繼承自Crystal Reports automation server,
'超過(guò)了這個(gè)示例的范圍。

'基于簡(jiǎn)單的理由,我們已經(jīng)選擇通過(guò)ASP服務(wù)端包含的功能來(lái)實(shí)現(xiàn)這個(gè)功能,你可以選擇不同的
'SmartViewer*.asp文件送到不同的瀏覽器,簡(jiǎn)單的用你想用的Smart Viewer asp文件來(lái)代替。

'這些選擇是: SmartViewerActiveX.asp, SmartViewerJave.asp,SmartViewerHTMLFrame.asp,
'and SmartViewerHTMLPAge.asp.注意,使用這些包含文件時(shí),你必須把相應(yīng)的.ASP文件放在同主
'ASP文件相同的虛擬路徑中。
'
'*注意* 對(duì)于 SmartViewerHTMLFrame and SmartViewerHTMLPage,你必須在虛擬路徑中有framepage.asp
'文件和toolbar.asp 文件

viewer = Request.Form("Viewer")

'上面讀取被使用的viewer的值,并放入變量"viewer"中

If cstr(viewer) = "ActiveX" then
%>
<!-- #include file="SmartViewerActiveX.asp" -->
<%
ElseIf cstr(viewer) = "Netscape Plug-in" then
%>
<!-- #include file="ActiveXPluginViewer.asp" -->
<%
ElseIf cstr(viewer) = "Java using Browser JVM" then
%>
<!-- #include file="SmartViewerJava.asp" -->
<%
ElseIf cstr(viewer) = "Java using Java Plug-in" then
%>
<!-- #include file="JavaPluginViewer.asp" -->
<%
ElseIf cstr(viewer) = "HTML Frame" then
Response.Redirect("htmstart.asp")
Else
Response.Redirect("rptserver.asp")
End If
'上面 If/Then/Else 被設(shè)計(jì)測(cè)試"viewer" 變量的值,基于這個(gè)值,送適當(dāng)?shù)腃rystal Smart Viewer
%>

?

?

總結(jié)

以上是生活随笔為你收集整理的网页打印问题,打印设置,打印预览,打印分页,纵打,横打及页面的边距的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。