IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Lotus | XML  >

Lotus Forms 中 Web 表单打印的解决方案

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

窦 文敏, 软件工程师, 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 准确打印的步骤:

  1. 打开 <Webform Server Install Dir>\Translator\ 目录下的 translator.properties 文件;
  2. 将 printOutputFormat 修改为 plugin/png 或者 plugin/gif;
  3. 保存并关闭 translator.properties 文件;
  4. 重启 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 文件中设置的表单打印方向。

  1. 打开 <Webform Server Install Dir>\Translator\ 目录下的 translator.properties 文件;
  2. 将 printOrientation 然后将其值修改为 landscape;
  3. 保存并关闭 translator.properties 文件;
  4. 重启 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 得配置过程:

  1. 打开 <Webform Server Install Dir>\Translator\ 目录下的 translator.properties 文件;
  2. 将 printingMode 设为 remote;
  3. 设置 printingServiceURL 来指向 print service 的位置;
  4. 保存并关闭 translator.properties 文件;
  5. 重启 Translator server。

连接 Print Service servlet 的 URL 为:http://<location>:<port>/translator/PrintService 。





回页首


中文表单打印需要注意的问题

  • 表单定义

    在表单定义中,需要将中文表单项的字体设置为相应的中文字体,如果不设置字体属性,将会使用默认的 Arial 字体,打印该表单时,中文字符将会打印成乱码。

  • Server 上的字体文件

    如果需要打印的表单是中文表单,需要在 Webform Server 的 translator.properties 中设置 fontDirectory 指向包含使用的相应中文字体文件的文件夹。





回页首


结束语

本文详细介绍了 Lotus Forms Webform Server 3.5 提供的 web 表单打印功能,并以图书馆信息管理中使用的表单为例阐述了如何使用 Lotus Forms Webform Server 提供的电子表单打印功能实现理想的电子表单打印效果。最后,还总结了中文表单打印中需要注意的问题。

声明

本人所发表的内容仅为个人观点,不代表 IBM 公司立场、战略和观点。



参考资料

学习

获得产品和技术


关于作者

窦文敏,IBM CDL 软件工程师,主要从事 IBM Lotus Forms 的测试工作。对 XML、Web 技术、软件过程和软件测试有浓厚的兴趣。




对本文的评价








IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款