web列印總結
一、列印樣式
區別顯示和列印的樣式
使用media=”print”控制列印時的樣式,如下:
列印時不顯示列印按鈕,設定頁面寬度
<style media="print"> .toolbox { display: none; } .container { max-width: 210mm; } </style> <style> .container { margin: 0 auto; max-width: 960px; } <style>
使用獨立的樣式檔案
<link rel="stylesheet" type="text/css" media="screen" href="mycss.css">
<link rel="stylesheet" type="text/css" media="print" href="myprintcss.css">
css裡media的使用
我們在網頁裡引用外部的css檔案時,通常是用如下的程式碼:<link rel=“stylesheet” type=“text/css” href=“mycss.css”>
實際上,上面的link物件裡,我們是省略了一個叫“media”的屬性,這個屬性指定樣式表規則用於指定的裝置型別。它有如下值可用:
all– 用於所有裝置型別
aural– 用於語音和音樂合成器
braille– 用於觸覺反饋裝置
embossed– 用於凸點字元(盲文)印刷裝置
handheld– 用於小型或手提裝置
print– 用於印表機
projection– 用於投影影像,如幻燈片
screen– 用於計算機顯示器
tty– 用於使用固定間距字元格的裝置。如電傳打字機和終端
tv– 用於電視類裝置
這麼多的值,並不是每個都可用,因為瀏覽器廠商並沒有全部實現它們。
二、分頁列印
列印需要分頁時,但是自動分頁又無法滿足自己的需求時,需要手動分頁
<style type="text/css"> .pageBreak{ page-break-after:always;} .pageBreakBefore{ page-break-before:always;} </style>
css裡用於列印的屬性
page-break-after : auto | always | avoid | left | right | null
引數:
auto : 假如需要在物件之後插入頁分割符
always :始終在物件之後插入頁分割符
avoid : 避免在物件後面插入頁分割符
left : 在物件後面插入頁分割符直到它到達一個空白的左頁邊
right :在物件後面插入頁分割符直到它到達一個空白的右頁邊
null : 空值。IE5用來取消頁分割符設定
這個page-break-after,主要用來在列印時插入一個分頁符,分頁就靠它了。它還有個雙胞胎的兄弟,叫page-break-before,引數和它一樣,看名字即知道它是用來在物件之前插入分頁符。
示例如下:
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Paginated HTML</title> <style type="text/css" media="print"> div.page { page-break-after: always; page-break-inside: avoid; } </style> </head> <body> <div class="page"> <h1>This is Page 1</h1> </div> <div class="page"> <h1>This is Page 2</h1> </div> <div class="page"> <h1>This is Page 3</h1> </div> </body> </html>
列印模板
關於.NET實現按模板分頁的部分關鍵程式碼
樣式
<link rel="stylesheet" href="@Url.Content("~/Content/normalize.css")"> <style media="print"> .toolbox { display: none; } .container { max-width: 210mm; } </style> <style> .container { margin: 0 auto; max-width: 960px; } .table-wrap { width: 100%; height: 903px; } table > * { font-size: 14px !important; } table { border-collapse: collapse; border: 1px solid black; width: 100%; } table tr th { height: 20px; } table tr td { border: 1px solid black; text-align: center; } table tr td.left { border: 1px solid black; text-align: left; padding-left: 5px; } .page-foot { margin-top: 10px; text-align: center; width: 100%; } .pageBreakBefore { page-break-before: always; -webkit-break-inside: avoid; page-break-inside: avoid; } .subbox { text-align: center; } .footbox { display: block; } .namebox { display: inline-block; width: 50%; margin-top: 10px; } .hospitalName { width: 200px; text-align: center; } .timeSpan { width: 200px; text-align: center; } .text_line { text-decoration: underline; } .toolbox { margin-top: 10px; text-align: right; } .wp10 { width: 10%; } .wp20 { width: 20%; } .wp50 { width: 50%; } </style>
html
<div class="toolbox"> <span>提醒:在非ie列印預覽時,通過預覽介面的“更多設定”去掉頁面上的頁首頁尾。   </span> <button id="btnPrint">列印</button> <button onclick="closeWin()">關閉頁面</button> </div>
@for (int index = 0; index < Model.List.Count;) { <h2 style="text-align: center;"> @string.Format("{0}服務週報", Model.CompanyName) </h2> <p class="subbox"> <span class="hospitalName">甲方名稱 <strong class="text_line">@Model.PartyACompanyName</strong> </span> <span class="timeSpan">日期 <strong class="text_line">@Model.StartDate</strong> 至 <strong class="text_line">@Model.EndDate</strong></span> </p> <div class="table-wrap"> <table> <tbody> <tr> <th class="wp10">序號</th> <th class="wp40">標題</th> <th class="wp20">姓名</th> </tr> @{ for (var j = 0; j < 40; j++) { if (index < Model.List.Count) { <tr> <td class="wp10">@(index + 1)</td> <td class="left wp40">@Model.List[index].Title</td> <td class="wp20">@Model.List[index].UserName</td> </tr> index++; } } } </tbody> </table> </div> <div class="footbox"> <div class="namebox"> <span class="hospitalName">甲方: ____________ </span> <span class="timeSpan"> 日期: ____________ </span> </div> <div class="namebox" style="text-align: right; width: 49%;"> <span class="hospitalName">乙方: ____________ </span> <span class="timeSpan"> 日期: ____________ </span> </div> <div class="page-foot">第@((index + 1) / 40 + (index % 40 > 0 ? 1 : 0))頁</div> </div> <div class="pageBreakBefore"></div> }
指令碼
<script src="~/Scripts/jquery-2.2.0.min.js"></script> <script> function pagesetup_null() { var hkey_root, hkey_path, hkey_key; hkey_root = "HKEY_CURRENT_USER"; hkey_path = "\Software\Microsoft\Internet Explorer\PageSetup\"; try { var RegWsh = new ActiveXObject("WScript.Shell"); hkey_key = "header"; RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, ""); hkey_key = "footer"; RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, ""); } catch (e) { } } $(function () { $("#btnPrint").click(function () { var explorer = window.navigator.userAgent; if (explorer.indexOf("MSIE") >= 0) { pagesetup_null(); } window.print(); }); }); function closeWin() { window.open("", "_self").close(); } </script>
參考與分享:
WEB列印系列教程之二–使用WScript.Shell通過程式設計方式進行復雜的WEB列印設定
相關文章
- Web 列印Web
- 日誌列印的碎碎念總結
- 使用IEWebBrowser元件進行列印的總結Web元件
- web直播方案總結:Web
- Java Web開發者總結JavaWeb
- Web列印探祕Web
- web列印方法Web
- Laravel5.6 如何列印 SQL?insert/update/select 列印方法總結LaravelSQL
- web測試方法總結Web
- web AR探索和總結Web
- Web總結:部署和安全Web
- Java web錯誤總結~JavaWeb
- 【web前端】小技巧總結Web前端
- 工作總結!日誌列印的11條建議
- web長連結技術個人總結Web
- 移動web開發總結Web
- 前端基礎 — Web事件總結前端Web事件
- 【Web總結】資源儲存Web
- Web(牛腩)概念知識總結Web
- Web測試乾貨總結Web
- 廣州,3年Web面試總結Web面試
- web前端效能優化總結Web前端優化
- web常見攻擊總結Web
- #web前端技術使用總結Web前端
- Web APP開發技巧總結WebAPP
- 【java web】--css+div總結JavaWebCSS
- 吉特倉庫管理系統-.NET列印問題總結
- 打個總結:Web效能優化Web優化
- web端功能測試心得總結!Web
- Web移動端適配總結Web
- web前端開發規範總結Web前端
- web移動開發總結(六)Web移動開發
- 【Web總結】使用者認證Web
- 【Web總結】資料庫系統Web資料庫
- Java Web 會話技術總結JavaWeb會話
- 清楚浮動方法總結----web前端Web前端
- 【總結】gulp,本地web伺服器Web伺服器
- Web高效能開發總結Web