IE打印模板,我在网上搜了很多的资料,但是讲解的内容比较分散,所以,从今天开始我将IE打印模板的功能、参数设置、模板制作、打印预览自定义元素,都统一集中到这里来讲解,方便使用该功能的朋友们,能顺畅简洁的了解IE打印模板的原理和制作。其中,文章的部分内容,因篇幅的问题,会转摘部分内容,希望转摘的大牛们,不要介意哈。
OK,让我们开始IE打印模板讲解之旅吧。希望你们能够静心来看哈。
从IE5.5开始,你可以定制WebBrowser控件和IE如何打印和预览文档。打印和预览的机制有打印模板控制,这是一些HTML文件,他们可以由开发人员可以使用由打印模板行为暴露的对象模型来生成。MSDN上说,如果打印模板是HTML文件的时候,定制的打印模板只能由C++语言从发布或拦截IDM_PRINT/IDM_PRINTPREVIEW命令的程序或控件中使用(打印模板的路径由IOleCommandTarget::Exec的pvaIn参数指定)。但实际上,Delphi、C#语言也是可以的,但是对于C#制作的东西要求要安装DotNet Framework,一般不建议用C#语言开发打印控件。至于VB可不可以,我暂时还不清楚,不敢肯定。缺省情况下,IE使用自己的打印模板,就是说,如果IOleCommandTarget::Exec的pvaIn参数为NULL的时候,IE就会调用自己的打印模板进行打印。
我们可以用打印模板做一些什么事情呢?
1、 控制打印和预览时页面的版面,打印以及预览的内容;
2、 控制打印任务如何被处理,例如以何种顺序打印页面;
3、 控制打印预览窗口的外观,在打印用户界面上放置定制的控件。
有了打印模板,我们可以加入一些非常酷的功能,例如加入公司的Logo,法律声明,广告;定制页眉页脚的位置和样式;安排打印计划进行定时打印,如此等等。
一个打印模板其实就是一个标准的HTML文件,与其他的HTML文件不同的是,他有4个声明模板的基本元素:LAYOUTRECT,DEVICERECT,TEMPLATEPRINTER和HEADERFOOTER。下面讲解一下这4个模板元素的作用:
LAYOUTRECT:为打印和预览模板中的文档内容生成容器.
DEVICERECT:为LAYOUTRECT元素和打印模板中的其他内容提供一个容器。位于DEVICERECT之外的内容都不会被打印。
TEMPLATEPRINTER:提供一个打印模板以获取页面设置和打印设置,并且可以控制从打印模板初始化出来的打印作业。
HEADERFOOTER:提供一个工具以便打印模板可以把页眉和页脚的格式化字符串转换为格式化的HTML文本。
以上这些对象我们都可以从MSDN上面找到相应的参考。
我在上面标红的文字,是很重要的,要深刻理解哦,因为它是非常关键的哈。
OK,既然了解了IE打印模板是怎么概念了,那么让我们开始第一个模板页的制作吧,模板页的制作需要熟悉HTML元素,当然也包括CSS。当然如果涉及事件(如模板动态添加,鼠标事件),我们就要熟悉JS和IE打印模板的元素了,这些内容,我们会逐步开始讲解,不要着急哦。
OK,让我们开始第一个概念性质的模板制作吧。
DeviceRect定义了所有页的主要模板。通过他可以放置你们公司的Logo,设置背景颜色或者装饰你的四周边框等。你可以通过style 来定义你的Master Page的格式。当然你也可以为你的每一个页定义一个不同的效果。假若我们需要定义一个下面的样式效果:
- 8.5英寸宽 //英寸(in)单位是绝对大小,标准的A4宽度,如果想转化为PX,那需要设备的分辨率*模板尺寸宽度=标准PX大小,但实际8.5in的基准已经胜任我们的大部分需求了。
- 11英寸高
- 黄色背影
- 1象素宽的黑色实线左边框
- 1象素宽的黑色实线上边框
- 4象素宽的黑色实线右边框
- 4象素宽的黑色实线下边框
- 四周为10象素宽的边距
那么我们可以定义一个叫做masterstyle的样式。如下:
以下是示例代码:
|
下面是符合这个效果的完整的HTML代码
以下是示例代码:
|
在这段代码中,我们包含了两个DeviceRect对象。你的每一页都要包含一个DeviceRect对象,如果你有100页,那么你就要有100个DeviceRect。
LayoutRect对象自动格式页面内容。每一页内容需要一个LayoutRect,并且定义到DeviceRect对象内部。每一个LayoutRect被限制为一页内容,并且当一页被填满时会自动跳转到下一页。
这里大家可以看到和我们的普通的页面差别不是很大。
OK,模板制作完了,我标红的文字要仔细看,就会明白这个示例页的代码意义,那么我们该如何使用这个页面呢?下一节的讲解,我们就开始调用吧。哇嘎嘎!至少给个图看看噻,别着急嘛。