2017-01-31
本文主要讲解如何使用 CSS 控制打印样式。
使用 CSS 可以控制文档如何正确的显示在不同的媒介 (Media) 上。其中分页媒介 (Paged Media) ,不同于连续媒介 (Continuous Media),它可以控制文档内容,将其分隔至一个或多个不相关联的页面 (如:书、幻灯片)。
页面 (Page Sheet) 是物理介质 (如:纸张) 的表面,它包含可打印区域 (Printable Areas) 和不可打印区域 (Non-printable Areas)。用户代理可以调整文档内容的格式,使其显示在可打印区域。
页面盒子 (Page Box) 是一个由长边 (Long Edge) 和短边 (Short Edge) 组成的矩形。长边的方向决定了页面朝向 (Page Orientation),长边是垂直方向,则页面朝向为纵向 (Portrait Orientation),反之为横向 (Landscape Orientation)。
CSS 打印无法指定文档是否为双面打印 (Duplex Printing),是否双面打印应该通过用户代理指定。不管是否双面打印,CSS 打印总是包含左页和右页 (分别通过 :left , :right 指定) 。(或者说 CSS 打印假定所有文档是双面打印)
和 CSS 盒子模型一样,页面盒子模型由外边距 (margin)、边框 (border)、内边距 (padding) 和 内容区域 (content area) 构成。
其中内容区域和外边距有着特殊的功能:
页面进度 (Page Progression)方向 是文档被分隔后的页面的排列方向。比如:现代中文页面进度多是从左至右;而古代中文的页面进度则相反。可以通过设置根元素 (root element) 的 direction 和 writing-mode 属性来改变页面进度。
页面的“第一页”是左页还是右页,可以由页面进度的方向决定,当页面进度方向为从左至右时,第一页是右页;反之为左页。(事实上也可以通过设置根元素的 break-before 属性来强制改变第一页是左页还是右页)
在 CSS 中使用 @media print
在 CSS 中使用 @import
在 HTML 中使用 <link> 标签
在 @media print 或 my-print-style.css 中,可以自由的修改大部分样式。
使用打印媒介查询可以自定义很多样式,当希望改变页面大小、边距等,就需要用到 @page 了。页面上下文 (Page Context) 中仅支持部分 CSS 属性,支持的属性有: margin 、 size 、 marks 、 bleed 以及页面外边距盒子等,不支持的属性将会被忽略。
注:常见浏览器都不支持该属性,推荐使用 Prince
页面的外边距被分成了 16 个页面外边距盒子。每个外边距盒子都有自己的外边距、边框、内边距和内容区域。页面外边距盒子用于创建页眉和页脚,页眉和页脚是页面的一部分,用于补充信息,如页码或标题。
页面外边距盒子需要在 @page 下使用,使用起来和伪类类似,也包含 content 属性。
margin 系列属性( margin-top 、 margin-right 、 margin-bottom 、 margin-left 和 margin )用于指定页面外边距大小。
在 CSS2.1 中,页面上下文中只支持 margin 系列属性。而且因为 CSS2.1 的页面上下文中没有字体的概念, margin 系列属性的值的单位不支持 em 和 ex 。
size 属性支持 auto 、 landscape 、 portrait 、 <length>{1,2} 和 <page-size>。
页面上下文也支持使用伪类,其中支持的伪类有: :left 、 :right 、 :first 和 :blank 。
需要双面打印时,通常需要将左页和右页设置不同的样式(如页边距、页码位置)。这时左页和右页可以分别用 :left 和 :right 表示。再次强调, 通过 :left 和 :right 设置左右页面不同样式,并不代表用户代理会将页面双面打印
伪类 :first 用于匹配到文档的第一页。
伪类 :blank 用于匹配文档的空白页。
注意,空白页既可能是左页,又可能是右页,设置左页或右页的样式也会显示在空白页上,如果不希望显示在空白页上,可以清除这些样式。
用于控制元素之前、之后或之中是否分页, 没有生成盒子的块元素不会生效 。
page-break-before 、 page-break-after 属性支持 auto 、 always 、 avoid 、 left 、 right 、 recto 和 verso 。
page-break-inside 属性仅支持 auto 和 avoid ,表示在元素内允许或禁止分页。
orphans 和 windows 用于指定在页面的底部或顶部,元素中允许剩余的最少行数,默认为 2 行。
示例:
https://lon.im/post/css-print.html
参考链接:
问题一:打印机分页打印怎么设置 第一种是使用袁飞的打印控件,但是好像不能满足你的要求。方法是用asp从数据库检索出符合条件的数据之后,动态生成客户端vbscript代码,从而控制打印控件,进行打印操作。第二种比较方便,唯一的缺陷是要手动设置“页面设置”。采用CSS。这里提几个关键点。定义一下样式:@media print {.print_unvisiable{display: none[email protected] print {.print_visiable{display:[email protected] screen {.screen_unvisiable{display:none[email protected] screen {.screen_visiable{display:}}.page{page-break-before:always}这些样式主要控制:打印隐藏打印显示屏幕隐藏屏幕显示分页然后你可以用asp动态生成所有的可能需要打印的记录集报表;并且用样式来控制他们是在打印机中打出来还是在屏幕显示。比如一个“打印”按钮,你可能只希望他在屏幕上显示,不希望他在打印的时候也打印出来,你可以用下面代码: 问题二:如何让打印机自动分页打印 一般A4打印机默认都是按套打印的,打印出来是自动分好的,只是没有错开,要自动错位分页的话,建议用A3复印机的平行移位分页或十字分页功能打印。
问题三:如何分页打印文件?我的打印机一点就自动打印了,没有分页设置 在你的word或者别的什么软件里 菜单上的文件选项里有个打印。从这里选择打印机,图标上是快速打印。所有的分页和选择都是在打印机选择里面的。
问题四:高分!打印机自动分页 如果你的文章有2页,打印10份
第一种会打印第一页,然后打印第二页,然后再第一页,第二页……
第二种情况是打印第一页10页后再打印第二页10页
问题五:打印机自动分页什么意思 根据你页面设置的尺寸大小
打印机将会自动根据你页面设置的尺寸大小将文档分页打印。
问题六:打印机分页器在什么位置 搓纸轮下面的叶状,就是分页器。分页器就是能配合搓纸轮在搓纸轮搓纸时将纸分为单张的构件,主要用于办公设备,如打印机、复印机、速印机、数字一体印刷机等。
分页器 一般由两部分组成 ,主体是比较硬的塑料构件,它的作用主要是承载分页用的特殊橡胶垫和将分页器组件安装在机器上构件。另一部分是直接接触纸张的橡胶垫,它也具有一定的摩擦力。表面也比较粗糙。也有的分页器仅仅是个橡胶垫。
分页器 原装的寿命一般也在50万张左右在办公,耗材市场有很多代用品,长的也只有两三万张,差的甚至只有两三千张。
问题七:图片怎么分页打印? 用Photoshop将图片分割为多个A3大小的小图片,然后用打印机打印。
问题八:打印机怎么取消分页余下的打印? 步骤如下:文件===》打印…===》打印范围内有全部/页两个选项,选择页:从1页至1页。还有一些办公软件还有页码选项的,只要在里面输入你想打印的页码,用逗号分隔即可。这样打印机就不会打第二页了,分奇数偶数打印就可以打印书册。马上去试试吧!
问题九:excel怎么分页打印 如何自动分页 如何取消分页详细图解 Excel中如何设置手动分页打印
现在工作簿中有4个表格,我希望每张纸上面打印一个表格,分别用4张纸打印出来。
第一步:进入“视图”选项卡,单击“工作簿视图”选项组中的“分页预览”;
第二步:上图“分页预览”中只有2页,分别是“第1页”和“第2页”。我们将光标移动右下角边框处,当鼠标变成双箭头时,按住左键不放,拖动边框,直到看见“第3页”和“第4页”的时候就放开鼠标;
第三步:现在Excel就可以打印4个页面出来了,但我们还需要将上面两个表格剪切到下面来才行,剪切完成如下图:
好了,现在分页已经完成了,打印工作簿的话,会打印4张纸,每张纸上面一个表格,下面再来说说如何自动分页打印!
Excel中自动分页页面设置
纵向
/ 横向设置:单击“页面布局”选项卡,单击“页边距”,选中最下面的“自定义边距”,在弹出的“页面设置”中可以选中“纵向”或“横向”;
分页的页边距设置:然后进入“页边距”设置上、下、左、右的边距大小;
所以页面的页眉页脚设置:你也可以自定义页任意设置眉和页脚。
Excel中快速插入分页符和删除分页符
先将光标定位到需要加分页的位置,然后单击“页面布局”选项卡中的“分隔符”,选中“插入分页符”或者“删除分页符”。如果想重新设置所以的分页效果,可以选中“重设所有分页符”。
总结:经过上面几步操作,相信大家已经可以熟练掌握excel怎么分页打印了吧,以上由office教程学习网倾力奉献,目的是为解决大家在工作应用中的棘手问题做演示使用,希望大家可以借此参考,举一反三,灵活运用。
问题十:怎么用针式打印机打印不分页 你点左下角的开始---设置----打印机和传真 右键单击空白处选服务器属性然后在格式这一栏点创建新格式 然后把纸张的宽度和高度填上 然后点确定
在找到你的打印机驱动---打印首选项里面 选中你刚才保存的格式
应该就好了
IE打印设置中默认的页眉和页脚的含义,而且可以对上述代码进行组合使用来设置自己喜欢的打印设置。这里我们所要说的并不单单是这些,大家设想一下我们开发了一个基于B/S结构的系统,其中有报表的部分,我们不能让每个客户端都自己去设置IE的打印设置,因此我们需要在程序中控制这些设置。下面我们用VBScript脚本写一个函数通过修改注册表键值来达到控制页面设置的目的,代码如下:script language="VBScript">
dim path, reg
'path存放IE打印设置的注册表地址, reg存放WScript.Shell组件的对象
path = "HKEY_CURRENT_USER\Software\Micro-soft\Internet Explorer\PageSetup"
'通过注册表修改打印设置,只修改页眉、页脚和各边界的值
'参数说明:header--页眉,footer--页脚,margin_left--左边界
'margin_top--上边界,margin_right--右边界,margin_bottom--下边界
'页边距的设置中 1对应25.4mm,即margin_left=1表示实际值的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.Number>0 then
MsgBox "不能创建WScript.Shell对象!"
exit function
end if
reg.RegWrite path+"\header", header'设置页眉
reg.RegWrite path+"\footer", footer '设置页脚
reg.RegWrite path+"\margin_left", margin_left'设置左边界
reg.RegWrite path+"\margin_top", margin_top'设置上边界
reg.RegWrite path+"\margin_right", margin_right'设置右边界
reg.RegWrite path+"\margin_bottom", margin_bottom'设置下边界
end function
/script>
程序中可以再写一个函数(可用VBscript或javascript脚本写)先调用该函数,然后再调用window.print()实现打印,这里就不给出代码了。细心的读者一定发现了这样打印出来的页面会有打印按钮在上面,而且分页是IE打印控件根据纸张大小分出来的,下面我们介绍一种方法来控制分页和打印按钮的显示。该方法是利用CSS样式表来控制这些设置,因为在样式表中有一个“media=print”属性,该属性只有在打印的时候才会起作用,因此可以实现对打印按钮和分页的控制,具体做法如下:
style media=print>
.noprint{display:none}
.pagenext{page-break-after: always}
/style>
只要在打印按钮中加入代码class="noprint",而在需要分页的地方加入代码 div class="pagenext">/div>就可以了。到目前为止我们的打印功能已经比较完善了,但是还没有打印预览和直接打印的功能,一般用户在打印之前都会预览一下,如果没有问题就直接打印了。下面我们通过IEWebBrowser组件来实现这两个功能。
首先创建IEWebBrowser对象:
object id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 width=0 height=0>/object >
然后通过不同参数调用ExecWB方法实现打印预览和直接打印功能:
WebBrowser.ExecWB(6,1)//打印
WebBrowser.ExecWB(6,6)//直接打印
WebBrowser.ExecWB(7,1)//打印预览