首先,你需要確定使用下面的?link 鏈接到一個(gè)專門的打印樣式表
永昌網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
link?rel=”stylesheet”?href=”print.css”?media=”print”?/
其次,放棄使用 padding-top 來控制每個(gè)打印頁的頭部樣式,而是使用下面的語句來控制每頁的上邊距
@page:first?{margin-top:30px}
其中 30 為你要設(shè)置的上邊距
IE打印設(shè)置中默認(rèn)的頁眉和頁腳的含義,而且可以對(duì)上述代碼進(jìn)行組合使用來設(shè)置自己喜歡的打印設(shè)置。這里我們所要說的并不單單是這些,大家設(shè)想一下我們開發(fā)了一個(gè)基于B/S結(jié)構(gòu)的系統(tǒng),其中有報(bào)表的部分,我們不能讓每個(gè)客戶端都自己去設(shè)置IE的打印設(shè)置,因此我們需要在程序中控制這些設(shè)置。下面我們用VBScript腳本寫一個(gè)函數(shù)通過修改注冊(cè)表鍵值來達(dá)到控制頁面設(shè)置的目的,代碼如下:
script language="VBScript"
dim path, reg
'path存放IE打印設(shè)置的注冊(cè)表地址, reg存放WScript.Shell組件的對(duì)象
path = "HKEY_CURRENT_USER\Software\Micro-soft\Internet Explorer\PageSetup"
'通過注冊(cè)表修改打印設(shè)置,只修改頁眉、頁腳和各邊界的值
'參數(shù)說明:header--頁眉,footer--頁腳,margin_left--左邊界
'margin_top--上邊界,margin_right--右邊界,margin_bottom--下邊界
'頁邊距的設(shè)置中 1對(duì)應(yīng)25.4mm,即margin_left=1表示實(shí)際值的25.4mm
function pagesetup(header, footer, margin_left, margin_top, margin_right, margin_bottom)
On Error Resume Next
Set reg = CreateObject("WScript.Shell")
if err.Number0 then
MsgBox "不能創(chuàng)建WScript.Shell對(duì)象!"
exit function
end if
reg.RegWrite path+"\header", header'設(shè)置頁眉
reg.RegWrite path+"\footer", footer '設(shè)置頁腳
reg.RegWrite path+"\margin_left", margin_left'設(shè)置左邊界
reg.RegWrite path+"\margin_top", margin_top'設(shè)置上邊界
reg.RegWrite path+"\margin_right", margin_right'設(shè)置右邊界
reg.RegWrite path+"\margin_bottom", margin_bottom'設(shè)置下邊界
end function
/script
程序中可以再寫一個(gè)函數(shù)(可用VBscript或javascript腳本寫)先調(diào)用該函數(shù),然后再調(diào)用window.print()實(shí)現(xiàn)打印,這里就不給出代碼了。細(xì)心的讀者一定發(fā)現(xiàn)了這樣打印出來的頁面會(huì)有打印按鈕在上面,而且分頁是IE打印控件根據(jù)紙張大小分出來的,下面我們介紹一種方法來控制分頁和打印按鈕的顯示。該方法是利用CSS樣式表來控制這些設(shè)置,因?yàn)樵跇邮奖碇杏幸粋€(gè)“media=print”屬性,該屬性只有在打印的時(shí)候才會(huì)起作用,因此可以實(shí)現(xiàn)對(duì)打印按鈕和分頁的控制,具體做法如下:
style media=print
.noprint{display:none;}
.pagenext{page-break-after: always;}
/style
只要在打印按鈕中加入代碼class="noprint",而在需要分頁的地方加入代碼 div class="pagenext" /div就可以了。到目前為止我們的打印功能已經(jīng)比較完善了,但是還沒有打印預(yù)覽和直接打印的功能,一般用戶在打印之前都會(huì)預(yù)覽一下,如果沒有問題就直接打印了。下面我們通過IEWebBrowser組件來實(shí)現(xiàn)這兩個(gè)功能。
首先創(chuàng)建IEWebBrowser對(duì)象:
object id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 width=0 height=0 /object
然后通過不同參數(shù)調(diào)用ExecWB方法實(shí)現(xiàn)打印預(yù)覽和直接打印功能:
WebBrowser.ExecWB(6,1); //打印
WebBrowser.ExecWB(6,6); //直接打印
WebBrowser.ExecWB(7,1); //打印預(yù)覽
套正常的css網(wǎng)頁展示的樣式,另一套專門給打印的時(shí)候用的CSS樣式,只要用戶打印,就會(huì)通過媒體查詢自動(dòng)用打印的專門樣式。這樣,既可以在瀏覽器很好展示效果,也不影響具體打印出來的效果。
正常瀏覽器用的樣式
link rel="stylesheet" type="text/css" media="screen" href="/css/styles.css" /專門打印用的樣式link rel="stylesheet" type="text/css" media="print" href="/css/print.css" /
其中media指定的屬性就是設(shè)備,顯示器上就是screen,打印機(jī)則是print,電視是tv,投影儀是projection。
由于客戶要求,打印時(shí)需把打印的按鈕去掉。這個(gè)時(shí)候就用到了控制打印的樣式表了。 link rel=”stylesheet” type=”text/css” media=”print” href=”print.css” / 正因?yàn)閤html和css是分離的,所以我們可以在print.css里自由書寫需要打印顯示的內(nèi)容和表現(xiàn)形式。那么這也要求我們?cè)跁鴮憍html的時(shí)候更 多考慮到打印顯示效果的需求,良好的擴(kuò)展標(biāo)記和結(jié)構(gòu)嵌套,使得我們輕松的使用display:none將內(nèi)容設(shè)置為不顯示。然后就是去書寫 print.css內(nèi)容的時(shí)候了,你象設(shè)置word一樣去寫你想打印的頁面吧。 后來想了想,其實(shí)單獨(dú)寫一個(gè)css增加了請(qǐng)求次數(shù),就想到了@media print{}的作用,代碼如下 @media print{ .printdesc { right: 0; width: 685px; height: 69px; background-color: #FFFFFF; float:left; overflow:auto; border:0px; } .text{ float:right; width: 688px; margin-top:20px; } .printlink{ height:0px; display:none; width:0px; z-index:-10; } .printlink a{ display:none; } } 后來想到如果打印頁面的某一部分,可以使用iframe來進(jìn)行操作,現(xiàn)在的打印頁面的局部內(nèi)容基本上就是使用iframe進(jìn)行處理。
2017-01-31
本文主要講解如何使用 CSS 控制打印樣式。
使用 CSS 可以控制文檔如何正確的顯示在不同的媒介 (Media) 上。其中分頁媒介 (Paged Media) ,不同于連續(xù)媒介 (Continuous Media),它可以控制文檔內(nèi)容,將其分隔至一個(gè)或多個(gè)不相關(guān)聯(lián)的頁面 (如:書、幻燈片)。
頁面 (Page Sheet) 是物理介質(zhì) (如:紙張) 的表面,它包含可打印區(qū)域 (Printable Areas) 和不可打印區(qū)域 (Non-printable Areas)。用戶代理可以調(diào)整文檔內(nèi)容的格式,使其顯示在可打印區(qū)域。
頁面盒子 (Page Box) 是一個(gè)由長邊 (Long Edge) 和短邊 (Short Edge) 組成的矩形。長邊的方向決定了頁面朝向 (Page Orientation),長邊是垂直方向,則頁面朝向?yàn)榭v向 (Portrait Orientation),反之為橫向 (Landscape Orientation)。
CSS 打印無法指定文檔是否為雙面打印 (Duplex Printing),是否雙面打印應(yīng)該通過用戶代理指定。不管是否雙面打印,CSS 打印總是包含左頁和右頁 (分別通過 :left , :right 指定) 。(或者說 CSS 打印假定所有文檔是雙面打?。?/p>
和 CSS 盒子模型一樣,頁面盒子模型由外邊距 (margin)、邊框 (border)、內(nèi)邊距 (padding) 和 內(nèi)容區(qū)域 (content area) 構(gòu)成。
其中內(nèi)容區(qū)域和外邊距有著特殊的功能:
頁面進(jìn)度 (Page Progression)方向 是文檔被分隔后的頁面的排列方向。比如:現(xiàn)代中文頁面進(jìn)度多是從左至右;而古代中文的頁面進(jìn)度則相反。可以通過設(shè)置根元素 (root element) 的 direction 和 writing-mode 屬性來改變頁面進(jìn)度。
頁面的“第一頁”是左頁還是右頁,可以由頁面進(jìn)度的方向決定,當(dāng)頁面進(jìn)度方向?yàn)閺淖笾劣視r(shí),第一頁是右頁;反之為左頁。(事實(shí)上也可以通過設(shè)置根元素的 break-before 屬性來強(qiáng)制改變第一頁是左頁還是右頁)
在 CSS 中使用 @media print
在 CSS 中使用 @import
在 HTML 中使用 link 標(biāo)簽
在 @media print 或 my-print-style.css 中,可以自由的修改大部分樣式。
使用打印媒介查詢可以自定義很多樣式,當(dāng)希望改變頁面大小、邊距等,就需要用到 @page 了。頁面上下文 (Page Context) 中僅支持部分 CSS 屬性,支持的屬性有: margin 、 size 、 marks 、 bleed 以及頁面外邊距盒子等,不支持的屬性將會(huì)被忽略。
注:常見瀏覽器都不支持該屬性,推薦使用 Prince
頁面的外邊距被分成了 16 個(gè)頁面外邊距盒子。每個(gè)外邊距盒子都有自己的外邊距、邊框、內(nèi)邊距和內(nèi)容區(qū)域。頁面外邊距盒子用于創(chuàng)建頁眉和頁腳,頁眉和頁腳是頁面的一部分,用于補(bǔ)充信息,如頁碼或標(biāo)題。
頁面外邊距盒子需要在 @page 下使用,使用起來和偽類類似,也包含 content 屬性。
margin 系列屬性( margin-top 、 margin-right 、 margin-bottom 、 margin-left 和 margin )用于指定頁面外邊距大小。
在 CSS2.1 中,頁面上下文中只支持 margin 系列屬性。而且因?yàn)?CSS2.1 的頁面上下文中沒有字體的概念, margin 系列屬性的值的單位不支持 em 和 ex 。
size 屬性支持 auto 、 landscape 、 portrait 、 length{1,2} 和 page-size 。
頁面上下文也支持使用偽類,其中支持的偽類有: :left 、 :right 、 :first 和 :blank 。
需要雙面打印時(shí),通常需要將左頁和右頁設(shè)置不同的樣式(如頁邊距、頁碼位置)。這時(shí)左頁和右頁可以分別用 :left 和 :right 表示。再次強(qiáng)調(diào), 通過 :left 和 :right 設(shè)置左右頁面不同樣式,并不代表用戶代理會(huì)將頁面雙面打印
偽類 :first 用于匹配到文檔的第一頁。
偽類 :blank 用于匹配文檔的空白頁。
注意,空白頁既可能是左頁,又可能是右頁,設(shè)置左頁或右頁的樣式也會(huì)顯示在空白頁上,如果不希望顯示在空白頁上,可以清除這些樣式。
用于控制元素之前、之后或之中是否分頁, 沒有生成盒子的塊元素不會(huì)生效 。
page-break-before 、 page-break-after 屬性支持 auto 、 always 、 avoid 、 left 、 right 、 recto 和 verso 。
page-break-inside 屬性僅支持 auto 和 avoid ,表示在元素內(nèi)允許或禁止分頁。
orphans 和 windows 用于指定在頁面的底部或頂部,元素中允許剩余的最少行數(shù),默認(rèn)為 2 行。
示例:
參考鏈接:
標(biāo)題名稱:css樣式打印,Css樣式打印不清新
文章源于:http://jinyejixie.com/article40/dsseoeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站設(shè)計(jì)公司、標(biāo)簽優(yōu)化、商城網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)