在以前的几篇文章里,介绍的都是如何利用IE本身提供的控件在进行打印设置,这种方法有它的局限:不能够以编程的方式进行页面方向的设置,而这有时很重要。下面本道就给大家介绍一下,如何使用一个叫ScriptX的控件来进行复杂一点的打印设置。
ScriptX是一个叫MeadCo的国外公司的产品,它分为基础版(免费)和高级版(收费),基础版可以对 页眉,页脚,页边距,纸张方向进行设置。高级版有一些额外的功能,由于是收费的,需要付费以后才能用到你系统中,这里就不介绍了。
ScriptX的最新版是6.4,可以在以下地址下载。ScriptX 6.4打印控件下载
下载以后是一个smsx.cab文件,把它放到你的应用目录下,例如/study/smsx.cab。
下面通过一个例子来讲解它的功能和使用。
- <html>
- <object id=factory style="display:none"
- classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814"
- codebase="http://ajava.org/study/smsx.cab#Version=6,4,438,06">
- </object>
- <script>
- function printWindow() {
- factory.printing.header = "使用ScriptX进行打印设置";
- factory.printing.footer = "AJava.org出品";
- factory.printing.portrait = false;//设为true就是横向
- factory.printing.leftMargin = 1.0;
- factory.printing.topMargin = 1.0;
- factory.printing.rightMargin = 1.0;
- factory.printing.bottomMargin = 1.0;
- }
- printWindow();
- </script>
- <input type="button" value="打印本页" onclick="factory.printing.Print(true)">
- <input type="button" value="打印目标框架页" onclick="factory.printing.Print(true, idFrame)">
- <input type="button" value="打印设置..." onclick="factory.printing.PageSetup()">
- <input type="button" value="打印预览..." onclick="factory.printing.Preview()">
- <iframe name="idFrame" width="100%" height="60%" src="http://www.baidu.com">
- </html>
factory.printing.Print(true),这里设置成true或false,我没有发现有什么不同的效果。它的原意是直接打印。
factory.printing.Print(true, idFrame),第一个参数同上,第二个参数是目标框架的name。
factory.printing.PageSetup()是调出页面设置窗口。
factory.printing.Preview()是调出页面预览窗口。
其他的代码很简单,不需要解释什么。
jatoolsPrinter 是一款实现网页套打的免费工具。该工具的特点是可以直接对web页面进行精确的分页打印,这不仅使“会设计网页就会做网页套打”成为可能,也使项目经理们摆脱了预算紧张的压力。jatoolsPrinter通过在网页中嵌入控件,解决了web客户端精确打印,批量打印,打印配置自动保留等问题。
由于jatoolsPrinter的官方网站上有详细的例子和文档,因此,本篇内容就不对具体的一些参数和用法进行介绍了。本道直接给出一个例子。
- <html>
- <head>
- <title>我的第一个打印文档</title>
- <!-- 插入打印控件 -->
- <OBJECT ID="jatoolsPrinter" CLASSID="CLSID:B43D3361-D975-4BE2-87FE-057188254255" codebase="jatoolsPrinter.cab#version=2,1,0,3"></OBJECT>
- <script>
- function doPrint()
- {
- myreport = {
- print_settings:{
- // 如果想使用默认打印机,不需要设置
- // printer: '联想激打',
- // 指定纸张的高宽以毫米为单位z,本设置实际是指定为a4大小
- pageWidth : 2100,
- pageHeight : 2970,
- // 指定打打印方向为横向, 1/2 = 纵向/横向
- orientation : 2 },
- documents:document, // 要打印的div 对象在本文档中,控件将从本文档中的 id 为 'page1' 的div对象,作为首页打印
- // id 为 'page2' 的作为第二页打印
- copyrights:'杰创软件拥有版权 www.jatools.com' // 版权声明,必须
- };
- jatoolsPrinter.printPreview(myreport); // 预览
- }
- </script>
- </head>
- <body bgcolor="#e0e0e0">
- <div id='page1' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文档第一页</div>
- <div id='page2' style='background:#ffffff;margin:10;width:270;height:450;float:left'>文档第二页</div>
- <input type="button" value="按钮" onClick=' doPrint()'>
- </body>
- </html>
点击按钮后,就弹出预览界面
两个div分别在第一页和第二页。
jatoolsPrinter免费版只能使用在网段192.168.*.*。
本来在没了解jatoolsPrinter之前,对它抱有很大的希望,谁知到只能在192.168.*.*使用。在实际环境中,有很多局域网是172.16.*.*网段,总不能要求用户改地址吧。
希望还有更好的打印控件出现。