一、打印样式

  区别显示和打印的样式

  使用media="print"控制打印时的样式,如下:

打印时不显示打印按钮,设置页面宽度

  1. <style media="print">
  2. .toolbox {
  3. display: none;
  4. }
  5.  
  6. .container {
  7. max-width: 210mm;
  8. }
  9. </style>
  10. <style>
  11. .container {
  12. margin: 0 auto;
  13. max-width: 960px;
  14. }
  15. <style>

  使用独立的样式文件

  1. <link rel="stylesheet" type="text/css" media="screen" href="mycss.css">
  2. <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-- 用于电视类设备

这么多的值,并不是每个都可用,因为浏览器厂商并没有全部实现它们。

二、分页打印

  打印需要分页时,但是自动分页又无法满足自己的需求时,需要手动分页

  1. <style type="text/css">
  2.   .pageBreak{ page-break-after:always;}
  3.   .pageBreakBefore{ page-break-before:always;}
  4. </style>

css里用于打印的属性

page-break-after : auto | always | avoid | left | right | null
参数:

auto : 假如需要在对象之后插入页分割符 
always :始终在对象之后插入页分割符 
avoid : 避免在对象后面插入页分割符 
left : 在对象后面插入页分割符直到它到达一个空白的左页边 
right :在对象后面插入页分割符直到它到达一个空白的右页边 
null : 空值。IE5用来取消页分割符设置

这个page-break-after,主要用来在打印时插入一个分页符,分页就靠它了。它还有个双胞胎的兄弟,叫page-break-before,参数和它一样,看名字即知道它是用来在对象之前插入分页符。

示例如下:

  1. <!DOCTYPE html>
  2.  
  3. <html>
  4. <head>
  5. <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  6. <title>Paginated HTML</title>
  7. <style type="text/css" media="print">
  8. div.page
  9. {
  10. page-break-after: always;
  11. page-break-inside: avoid;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div class="page">
  17. <h1>This is Page 1</h1>
  18. </div>
  19. <div class="page">
  20. <h1>This is Page 2</h1>
  21. </div>
  22. <div class="page">
  23. <h1>This is Page 3</h1>
  24. </div>
  25. </body>
  26. </html>

打印模板

  关于.NET实现按模板分页的部分关键代码

样式

  1. <link rel="stylesheet" href="@Url.Content("~/Content/normalize.css")">
  2. <style media="print">
  3. .toolbox {
  4. display: none;
  5. }
  6.  
  7. .container {
  8. max-width: 210mm;
  9. }
  10. </style>
  11. <style>
  12. .container {
  13. margin: auto;
  14. max-width: 960px;
  15. }
  16. .table-wrap {
  17. width: %;
  18. height: 903px;
  19. }
  20. table > * {
  21. font-size: 14px !important;
  22. }
  23.  
  24. table {
  25. border-collapse: collapse;
  26. border: 1px solid black;
  27. width: %;
  28. }
  29.  
  30. table tr th {
  31. height: 20px;
  32. }
  33.  
  34. table tr td {
  35. border: 1px solid black;
  36. text-align: center;
  37. }
  38.  
  39. table tr td.left {
  40. border: 1px solid black;
  41. text-align: left;
  42. padding-left: 5px;
  43. }
  44.  
  45. .page-foot {
  46. margin-top: 10px;
  47. text-align: center;
  48. width: %;
  49. }
  50.  
  51. .pageBreakBefore {
  52. page-break-before: always;
  53. -webkit-break-inside: avoid;
  54. page-break-inside: avoid;
  55. }
  56.  
  57. .subbox {
  58. text-align: center;
  59. }
  60.  
  61. .footbox {
  62. display: block;
  63. }
  64.  
  65. .namebox {
  66. display: inline-block;
  67. width: %;
  68. margin-top: 10px;
  69. }
  70.  
  71. .hospitalName {
  72. width: 200px;
  73. text-align: center;
  74. }
  75.  
  76. .timeSpan {
  77. width: 200px;
  78. text-align: center;
  79. }
  80.  
  81. .text_line {
  82. text-decoration: underline;
  83. }
  84.  
  85. .toolbox {
  86. margin-top: 10px;
  87. text-align: right;
  88. }
  89.  
  90. .wp10 {
  91. width: %;
  92. }
  93.  
  94. .wp20 {
  95. width: %;
  96. }
  97.  
  98. .wp50 {
  99. width: %;
  100. }
  101. </style>

html

  1. <div class="toolbox">
  2. <span>提醒:在非ie打印预览时,通过预览界面的“更多设置”去掉页面上的页眉页脚。 &emsp; </span>
  3. <button id="btnPrint">打印</button>
  4. <button onclick="closeWin()">关闭页面</button>
  5. </div>
  1. @for (int index = ; index < Model.List.Count;)
  2. {
  3. <h2 style="text-align: center;"> @string.Format("{0}服务周报", Model.CompanyName) </h2>
  4. <p class="subbox">
  5. <span class="hospitalName">甲方名称 <strong class="text_line">@Model.PartyACompanyName</strong> </span>
  6. <span class="timeSpan">日期 <strong class="text_line">@Model.StartDate</strong> 至 <strong class="text_line">@Model.EndDate</strong></span>
  7. </p>
  8. <div class="table-wrap">
  9. <table>
  10. <tbody>
  11. <tr>
  12. <th class="wp10">序号</th>
  13. <th class="wp40">标题</th>
  14. <th class="wp20">姓名</th>
  15. </tr>
  16. @{
  17. for (var j = ; j < ; j++)
  18. {
  19. if (index < Model.List.Count)
  20. {
  21. <tr>
  22. <td class="wp10">@(index + )</td>
  23. <td class="left wp40">@Model.List[index].Title</td>
  24. <td class="wp20">@Model.List[index].UserName</td>
  25. </tr>
  26. index++;
  27. }
  28. }
  29. }
  30. </tbody>
  31. </table>
  32. </div>
  33. <div class="footbox">
  34. <div class="namebox">
  35.  
  36. <span class="hospitalName">甲方: ____________ </span>
  37. <span class="timeSpan"> 日期: ____________ </span>
  38.  
  39. </div>
  40. <div class="namebox" style="text-align: right; width: 49%;">
  41.  
  42. <span class="hospitalName">乙方: ____________ </span>
  43. <span class="timeSpan"> 日期: ____________ </span>
  44.  
  45. </div>
  46. <div class="page-foot">第@((index + ) / + (index % > ? : ))页</div>
  47. </div>
  48. <div class="pageBreakBefore"></div>
  49. }

脚本

  1. <script src="~/Scripts/jquery-2.2.0.min.js"></script>
  2. <script>
  3. function pagesetup_null() {
  4. var hkey_root, hkey_path, hkey_key;
  5. hkey_root = "HKEY_CURRENT_USER";
  6. hkey_path = "\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
  7. try {
  8. var RegWsh = new ActiveXObject("WScript.Shell");
  9. hkey_key = "header";
  10. RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
  11. hkey_key = "footer";
  12. RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");
  13. } catch (e) {
  14. }
  15. }
  16.  
  17. $(function () {
  18. $("#btnPrint").click(function () {
  19. var explorer = window.navigator.userAgent;
  20. if (explorer.indexOf("MSIE") >= ) {
  21. pagesetup_null();
  22. }
  23. window.print();
  24. });
  25. });
  26.  
  27. function closeWin() {
  28. window.open("", "_self").close();
  29. }
  30. </script>

参考与分享:

分享几款免费的web打印控件

WEB打印系列教程之二--使用WScript.Shell通过编程方式进行复杂的WEB打印设置

WEB打印系列教程之三--简单的WEB打印分页设置

每页都有的表头和打印分页

WEB打印-网页打印功能(带分页、可多页打印)

Google Chrome打印分页符

web打印中如何强制分页

web打印总结的更多相关文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

  2. Web打印--Lodop API

    Lodop是一款专业的WEB打印控件,其设计目标是简单易用.功能足够强大,开创WEB打印开发的新局面. Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实 ...

  3. Web打印控件

    Lodop是什么? 有人说她是Web打印控件,因为她能打印.在浏览器中以插件的形式出现,用简单一行语句就把整个网页打印出来: 有人说她是打印编程接口,因为她介于浏览器和打印设备之间,是个通道和桥梁,几 ...

  4. JS Web打印,实现预览新样式

    问题描述:     JS实现Web打印,要求打印前一种样式,打印预览时新样式 问题解决:         (1)设置打印时的css样式,设置打印前的css样式 注:         以上为print. ...

  5. Web打印控件smsx.cab使用说明

    在项目开发中,经常会用到页面打印的功能,在ASP.NET环境下推荐一款web打印控件smsx.cab.    使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局 ...

  6. 2013第39周一Web打印

    2013第39周一Web打印 项目中遇到了Java Web打印问题,简单调用IE浏览器的打印不能完全满足要求,于是就搜集了Web打印相关的主题,简单汇总一下.web打印难点在分页.页面纸张设置,页眉页 ...

  7. WEB打印插件Lodop

    Lodop.C-Lodop使用说明及样例   Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现 复杂打印.控件功能强大,却简单易用,所有调用如 ...

  8. WEB打印插件jatoolsPrinter

    为什么选择 jatoolsPrinter 免费版? 支持无预览直接打印 真正免费,不加水印,没有ip或域名限制,不限时间,兼容ie6+ 无须注册,下载即用 提供经过微软数字签名的cab自动安装包,安装 ...

  9. 网页WEB打印控件

    网页WEB打印控件制作 在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的 ...

  10. WEB打印的几种方案

    -------------------------------------------一  基于Web的打印方案比较分析-------------------------------- 基于web的套 ...

随机推荐

  1. PF_RING install in centos7

    很多centos7是最小化安装. 这样很多kernel就没有安装全,而且很多开发库也没有. 在安装PF_RING过程中,会缺少很多依赖. 首先安装依赖包: yum -y install numactl ...

  2. Python爬虫学习之使用beautifulsoup爬取招聘网站信息

    菜鸟一只,也是在尝试并学习和摸索爬虫相关知识. 1.首先分析要爬取页面结构.可以看到一列搜索的结果,现在需要得到每一个链接,然后才能爬取对应页面. 关键代码思路如下: html = getHtml(& ...

  3. 基于Accord.Audio和百度语言识别

    ---恢复内容开始--- 目标需求 使用录音形式,模拟微信语音聊天.按住录音,松开发送语音,并完成语音识别. ps:百度的语言识别有60秒长度限制,需要自己做好控制. 实现方案 采用C# winfor ...

  4. jsp中EL表达式不起作用的问题1

    问题:在jsp页面中使用el表达式取值,取不到值,但是使用jsp中嵌套java代码可以取到值,对应代码如下: 解决: 只要在 jsp中 头文件中写上 : <%@page isELIgnored= ...

  5. github上搜索资源

    1.进入官网 点击Explore 2.点击Trending 3.资源都在这上面,可以根据语言分类 4.搜索链接 https://github.com/trending

  6. Spark术语

    1.resilient distributed dataset (RDD) The core programming abstraction in Spark, consisting of a fau ...

  7. Sphinx学习笔记(一)

    最近负责一个项目,需要用到全文检索,我的环境大体如下:       1.数据保存在MySQL中     2.需要支持中文检索     3.尽可能的简单       选择了Sphinx,至于solr和E ...

  8. iOS App3D Touch快捷键的静态以及动态设置详细使用

    1. 功能支持 3D-Touch 只在 iOS 9 及以上版本得到支持,之前版本的 iOS 并不支持该功能:3D-Touch 只在 iPhone 6s 及以后型号的 iPhone 或 iPad Pro ...

  9. iOS 环信透传cmd消息多次重复接收,解决办法

    由于项目需求,需要在项目中接到消息的时候做不同界面的不同的操作,哪儿需要哪儿就要添加代理:引起代理事件重复执行:所以要在VC显示的时候添加代理,消失的时候删除代理 环信 透传 消息多次接收情况(由于代 ...

  10. MongoDB入门系列(二):Insert、Update、Delete、Drop

    概述 本章节介绍Insert.Update.Delete.Drop操作基本语法. 环境: Version:3.4 insert insert()基本语法如下: db.collection.insert ...