龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

IE6.0打印机制解析

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
网页打印,可以通过浏览器的"打印"功能实现,但"打印模板"机制,却是 IE 5.5 /6.0 以及 Netscape 6.0 所独有的;准确一点, IE 5.5 只是一个机制雏形,在 IE 6.0 中才得以完全体现。IE 6.0 的打

 网页打印,可以通过浏览器的"打印"功能实现,但"打印模板"机制,却是 IE 5.5 /6.0 以及 Netscape 6.0 所独有的;准确一点, IE 5.5 只是一个机制雏形,在 IE 6.0 中才得以完全体现。IE 6.0 的打印功能模块,在精确控制页面边界,文本间隔,以及打印的统一性上,功能更为完备。
  通过创建打印模板,你可以精确控制:
  
  网页打印及预览时的页面风格与内容编排风格;
  打印属性,如自动为打印的页面添加卷标或编号;
  精确控制打印预览界面的各个元素与变量。
  
  通过打印模板,你可以:
  
  自动为所有打印页面添加固定内容,如公司标识,版权申明,或者指定广告;
  自定义页面标头与尾注等元素,比如页码或卷标;
  指定打印历史与任务;
  书本化奇偶分页映射打印......
  
  打印模板机制是建立在动态 Html 语言基础上的,涉及到主要两个行为:DeviceRect, LayoutRect ,下面我们就这两个行为深入地探讨 IE 6.0 的打印机制。
  
  另外需要说明的是,DHTML (动态超文本标识语言)的行为跟其他语言的"行为"一样,都是一种应用编程接口,初始状态下有自己的默认属性,在一定的事件下,由用户决定调用其承认的功能模块,从而产生相对应的"行为"。而且,"行为"可以自己编写,不过得以".htc"为其扩展名以供调用。
  
  一.DeviceRect ,定义打印总体风格:
  
  打印总体风格,包括为打印页面添加如公司标识的固定内容(网页上不一定有,只体现在打印纸张上或预览页面上,后同);打印页面的颜色风格;打印页面的边缘属性或图案;等等。
  
  在进行 DeviceRect 引用前,先得确定页面风格,方法是用<style>进行设置。
  
  例一:我们来定制如下的打印模板
  8.5 inch 宽
  11 inch 高
  黄色背景
  1 pixel 宽的黑色实心左边界
  1 pixel 宽的黑色实心上边界
  4 pixels 宽的黑色实心右边界
  4 pixels 宽的黑色实心下边界
  所有边界与纸张边缘为 10 pixels 的距离
  
  现在我们用 style 进行设定,假设这个 style 名为 Mystyle1:
  
  <style TYPE="text/Css">
  .Mystyle1
  {
  width:8.5in;
  height:11in;
  background:#FFFF99;
  border-left:1 solid black;
  border-top:1 solid black;
  border-right:4 solid black;
  border-bottom:4 solid black;
  margin:10px;
  }
  </style>
  
  下面我们给出 DeviceRect 引用的完全页面代码,
  
  <HTML XMLNS:IE>
  <HEAD>
  <?IMPORT NAMESPACE="IE" IMPLEMENTATION="#default">
  <style TYPE="text/css">
  .Mystyle1
  {
  width:8.5in;
  height:11in;
  background:#FFFF99;
  border-left:1 solid black;
  border-top:1 solid black;
  border-right:4 solid black;
  border-bottom:4 solid black;
  margin:10px;
  }
  </style>
  </HEAD>
  <BODY>
  
  <IE:DEVICERECT ID="page1" CLASS="Mystyle1" MEDIA="print">
  </IE:DEVICERECT>
  
  <IE:DEVICERECT ID="page2" CLASS="Mystyle1" MEDIA="print">
  </IE:DEVICERECT>
  
  </BODY>
  </HTML>
  
  在这个页面中,共进行了两个 DeviceRect 引用。作为一种规则,每一个单独的打印页面,必须有一个相对应的 DeviceRect 标记,假如有 1000 个页面,那就得有 1000 个 DeviceRect 标记!吓住了?别担心,后面我们会教你一个方法,让所有的 DeviceRect 标记自动完成!
  
  在上面的代码中,ID 是标志属性,不同的页面必须有自己不同的标识;CLASS 引用了 style 属性;MEDIA 属性则指明了本页面的最终用途是进行打印;<?IMPORT NAMESPACE="IE" IMPLEMENTATION="#default">这句话则是指输入默认的行为,它们分别是 DeviceRect, LayoutRect。
  
  二.LayoutRect ,定义页面内容风格:
  
  跟 DeviceRect 一样,不同的页面,要进行 LayoutRect 引用时都需要添加 LayoutRect 标记,其智能添加方法将在后面介绍; LayoutRect 与 DeviceRect 假如在同一个页面中同时出现,则前者需放在后者之内;另外, LayoutRect 对内容风格的设定,也通过 style 得以实现。
  
  例二:我们来定制如下的内容风格的打印模板:
  
  5.5 inches 宽
  8 inches 高
  与打印纸张边缘,四边保持 1 inch 的宽度(加上页面本身的边缘宽度,为实际的打印边缘宽度)
  
  

精彩图集

赞助商链接