级别: 初级 窦 文敏, 软件工程师, IBM
2009 年 10 月 16 日 随着 Web 2.0 技术和 RIA 应用的不断发展,电子表单的应用不断增多。在某些应用中,使用电子表单的同时还需要打印表单,而打印 Web 上的电子表单往往受到浏览器等本身特性的影响,Lotus® Forms Webform Server 提供了方便打印各种电子表单的功能。本文将通过实例向用户详细的介绍如何使用 Lotus Forms Webform Server 提供的表单打印功能实现高质量的电子表单打印。
Lotus Forms、XFDL 及 Lotus Forms Webform Server 的背景简介
Lotus Forms 为客户提供电子表单解决方案,帮助开发人员创建、部署和管理基于 XML 表单。电子表单的填写和打印是 Lotus Forms 提供的最基本功能,与纸质表单相比,电子表单的最大优势之一就是能够动态地响应用户动作,并支持客户通过基于浏览器的电子表单将流程扩展到客户。
Lotus Forms 在一种称为可扩展表单描述语言(Extensible Forms Description Language,XFDL)的 XML 文档中存储表单文档。XFDL 支持高精度的布局,集成了计算和输入检验、数字签名及其他特性。
Lotus Forms Webform Server 是 Lotus Forms 的服务器端组件,它将 XFDL 转换为 HTML/JavaScript,提供一个零内存占用的 “瘦客户端” 呈现系统。这使用户可以使用 Web 浏览器查看和操作表单、在表单中输入信息、批准、签名、打印和提交表单,而这些都不需要在客户端上安装额外的软件。然后,Webform Server 可以接收完成的 HTML 表单,将它们转换回 XFDL 格式,并将它们传递给应用程序进行进一步处理。Translator 是 Webform Server 得最主要组成部分,负责执行 XFDL 和 HTML 之间的转换。
实例概述
本文选用了图书馆信息管理的表单作为例子,随着信息技术和物流系统的发展,类似的信息管理系统层出不穷,图书的定购、入库整理保存、借阅咨询服务等都需要表单来记录及展现信息。
图书定购合同作为严肃的具有法律效力的表单,在打印时需要准确打印;大批量图书入库信息整理可能会带来大表单打印的需求。因此在该系统中需要灵活的表单打印功能。
本文中使用的完整表单详见下载部分,可以使用 Lotus Forms Viewer 3.5 或 Lotus Forms Webform Server 3.5 来打开该表单。
准确打印
Lotus Forms Webform Server 3.5 对 web 表单打印的一个重要改进就是提供了表单的准确打印功能。之前通过 PNG 或者 GIF 输出格式打印出来的表单会包含浏览器的页眉和页脚等,这样导致了打印出来的表单是被缩小的,而且因为含有不需要的信息,这样的表单作为定购合同是不合适的,可以通过 Lotus Forms Webform Server 3.5 提供的表单准确打印功能来解决这个问题。
使用 Lotus Forms Webform Server 3.5 准确打印的步骤:
- 打开 <Webform Server Install Dir>\Translator\ 目录下的 translator.properties 文件;
- 将 printOutputFormat 修改为 plugin/png 或者 plugin/gif;
- 保存并关闭 translator.properties 文件;
- 重启 Translator server。
打开任意一个表单,单击菜单中的打印按钮,如果以前没有使用过 Lotus Webform Server 3.5 的准确打印或数字签名功能,会弹出安装插件的提示对话框,根据提示安装插件。成功安装插件后,表单打印的结果就是准确打印。
不同浏览器上的插件安装步骤可能会有差别,插件只需要安装一次。
纵向打印与横向打印
Lotus Forms Webform Server 3.5 支持用户设置表单的打印方向,即用户可以选择纵向或者横向打印表单。一般的 web 表单打印都是默认的纵向打印,这不适合打印宽度大于高度的表单,在 Lotus Forms Webform Server 3.5 中,用户可以选择横向打印这类表单。
用户可以在 translator.properties 文件中设置表单打印方向,也可以在表单中设置打印方向。打印时优先使用表单中设置的打印方向。下面将举例说明。
实例 1:使用 translator.properties 文件中设置的表单打印方向。
- 打开 <Webform Server Install Dir>\Translator\ 目录下的 translator.properties 文件;
- 将 printOrientation 然后将其值修改为 landscape;
- 保存并关闭 translator.properties 文件;
- 重启 Translator server。
打开任意一个没有定义 printOrientation 的表单,打印该表单,表单的打印方向为横向。
实例 2:使用表单中设置的打印方向。
如实例表单 1(Sample1.xfdl)所示,表单的打印设置为横向打印,表单第一页的打印设置为纵向打印,表单第二页没有打印设置。
表单的重要代码如下所示。
清单 1. 实例表单 1
<XFDL xmlns:custom="http://www.ibm.com/xmlns/prod/XFDL/Custom"
xmlns:designer="http://www.ibm.com/xmlns/prod/workplace/forms/designer/2.6"
xmlns:xfdl="http://www.ibm.com/xmlns/prod/XFDL/7.6"
xmlns="http://www.ibm.com/xmlns/prod/XFDL/7.6">
<globalpage sid="global">
<global sid="global">
<formid>
<version>1.0.0</version>
</formid>
<printsettings>
<dialog>
<orientation>landscape</orientation>
</dialog>
</printsettings>
</global>
</globalpage>
<page sid="PAGE1">
<global sid="global">
<printsettings>
<dialog>
<orientation>portrait</orientation>
</dialog>
</printsettings>
</global>
……
</page>
<page sid="PAGE2">
<global sid="global">
</global>
……
</page>
</XFDL>
|
无论 translator.properties 中的 printOrientation 为何值,当从第一页打印表单时,使用纵向打印;当从第二页打印表单时,使用横向打印。
页面中设置的打印属性将覆盖表单中设置的打印属性,所以如果设置了页面特定的打印属性,需要同时重复表单中设置的该页面的打印属性。
大表单打印—分割打印
以前,Lotus Forms Webform Server 只能将表单缩小的打印到一张纸上,可能由于字体较小而不利于用户的使用。Lotus Forms Webform Server 3.5 支持表单的分割打印,用户可以使用该功能打印大的表单,如含有大表格的表单。
可以通过设置 translator.properties 中的 printPageLayout 选项来定义分割打印属性。该选项可以有三个值,分别为: shrinktopage、 tileonedirection 和 tiletwodirections。
设置 printPageLayout 为 tileonedirection,然后打印实例表单2(Sample2.xfdl),该表单的宽度大于高度,表单将在横向分割打印。如果打印实例表单3(Sample3.xfdl),该表单的高度大于宽度,表单将在纵向分割打印。
设置 printPageLayout 为 tiletwodirections,打印实例表单3,实例表单3的宽度和高度都大于默认的表单打印尺寸,表单将在两个方向分割打印。
使用 Print Service 分离打印任务
在 Lotus Forms Webform Server 中,可以使用 Print Service servlet 将打印任务放到集群环境中的特定机器上。Print Service servlet 绑定在 Translator 的安装文件中,会被自动的安装到任何安装了 Translator 的机器中。
使用 Print Service servlet 得配置过程:
- 打开 <Webform Server Install Dir>\Translator\ 目录下的 translator.properties 文件;
- 将 printingMode 设为 remote;
- 设置 printingServiceURL 来指向 print service 的位置;
- 保存并关闭 translator.properties 文件;
- 重启 Translator server。
连接 Print Service servlet 的 URL 为:http://<location>:<port>/translator/PrintService 。
中文表单打印需要注意的问题
结束语
本文详细介绍了 Lotus Forms Webform Server 3.5 提供的 web 表单打印功能,并以图书馆信息管理中使用的表单为例阐述了如何使用 Lotus Forms Webform Server 提供的电子表单打印功能实现理想的电子表单打印效果。最后,还总结了中文表单打印中需要注意的问题。
声明
本人所发表的内容仅为个人观点,不代表 IBM 公司立场、战略和观点。
参考资料 学习
获得产品和技术
关于作者  | |  | 窦文敏,IBM CDL 软件工程师,主要从事 IBM Lotus Forms 的测试工作。对 XML、Web 技术、软件过程和软件测试有浓厚的兴趣。 |
对本文的评价
|