如何使用Word Automation Services开发应用

如题所述

使用Word Automation Services更改文档格式
当我们使用Open XML SDK 2.0 for Microsoft Office时,有些任务是比较困难的。比如:重新编排页码,将文档转换为诸如PDF等的其它格式,或者更新文档目录表、字段,以及文档中的其它动态内容。而SharePoint 2010提供的Word Automation Services新功能就是用来解决这些问题的。
Word Automation Services是一个共享服务,它无需人员参与,可以在服务器端执行文档格式转换以及其它重要功能。其最初设计理念是在服务器端以可靠和可预测的方式处理多个文档。
我们可以使用Word Automation Services将Open XML WordprocessingML格式转换成其它格式。比如:可以将多个文档转换成PDF格式然后发送到打印机的打印池,或者通过邮件将PDF文档发送给客户,也可以将其它格式的文档(如:HTML,Word 97-2003二进制格式)转换成Open XML work-processing文档。
除了进行文档格式转换,Word Automation Services还提供了其它一些重要功能。比如:更新文档中的字段,将altChunk内容转换成使用正常格式的段落。如果我们使用Open XML SDK执行这些工作是非常困难的,但是Word Automation Services做这些工作就非常容易。以前,我们使用Word Automation Services为客户端执行这些工作,但这是有问题的。Word客户端更适合进行交互式文档编写,而不是用来在服务器端进行多文档处理的。如果在Word中执行这些任务,Word往往会显示错误提示框,而且如果服务器自动操作Word客户端,又没有用户响应对话框,这样线程就无法停止。这是一个与Word自动化相关的问题,有一篇KB专门介绍,Considerations for Server-side Automation of Office。
一个使用Word Automation Services的场景
下面这个场景展示了如何使用Word Automation Services在服务器端自动处理文档。
某位专家遵循一定的规范创建了一些Word模板,她或许会使用内容控制为这些模板提供一些使用指导,这为在文档生成过程中确定数据应该出现在文档模板的哪些位置提供了良好的用户体验和可靠的编程方法。通常,这些文档模板保存在SharePoint文档库里。
运行在服务器端的程序把文档模板和数据结合在一起,形成Open XML WordprocessingML (DOCX)文档。最好的方法是使用Open XML SDK 2.0 for Microsoft Office编写这个程序,因为这个SDK专门用来在服务器端生成文档。这些文档存放在SharePoint文档库里。
文档自动生成后,可能需要被打印,然后转换为WordprocessingML、PDF、XPS或MHTML格式再通过邮件发送给一系列用户。
作为转换工作的一部分,我们可以使用Word Automation Services更新文档中的字段,比如:文档目录表。
一起使用Open XML SDK 2.0 for Microsoft Office以及Word Automation Services可以创建丰富的、端到端解决方案,而无须自动化Word客户端应用。
Word Automation Services的一个突出优点是可以进行扩展升级,而Word客户端应用无法做到这点,我们可以配置Word Automation Services使用多个处理器,如果需要,还可以配置为负载均衡。
另外一个突出优点是,Word Automation Services在文档布局(包括分页排版)方面保持了与Word客户端近乎完全一致的体验。无论文档是在服务器端处理的,还是在客户端处理的,其布局都是完全一致的。
支持的源文档格式
Open XML File Format documents (.docx, .docm, .dotx, .dotm)
Word 97-2003 documents (.doc, .dot)
Rich Text Format files (.rtf)
Single File Web Pages (.mht, .mhtml)
Word 2003 XML Documents (.xml)
Word XML Document (.xml)
支持的目标文档格式
Portable Document Format (.pdf)
Open XML Paper Specification (.xps)
Word Automation Services的其它功能
除了加载文档并将文档保存为其它格式外, Word Automation Services还具有其它一些功能。
我们可以使用Word Automation Services更新文档目录、table of authorities以及索引字段,这在生成文档时非常重要。如果文档在生成后,其目录表未能正确更新,那么确定文档的分页将是非常困难的工作,而Word Automation Services可以非常容易地处理这个工作。
Open XML word-processing文档包含各式各样的字段类型,使用这些字段类型我们可以为文档动态添加内容。我们可以使用Word Automation Services重新计算所有的字段。比如:为文档添加一个插入当前日期的字段类型。这样当所有字段被更新时,其关联的内容也随之被更新,这样文档就可以在字段所在位置显示当前日期。
使用内容控制的一个最有效途径是将内容绑定到一个自定义XML元素。关于如何进行绑定,请参考Building Document Generation Systems from Templates with Word 2010 and Word 2007,以及其它一些资源。通过替换自定义XML元素可以将绑定内容控件的内容进行更新,而无须更改文档主体。文档主体包含了所有绑定内容控件的缓存值,如果只是替换自定义XML元素,文档主体中的缓存值是不会被更新的。如果用户只是用Word客户端应用查看就不会有这个问题,但是,如果要更深地处理WordprocessingML markup,我们就必须更新文档主体中的缓存值。而Word Automation Services正好可以做这项工作。
更换以altChunk元素表示的格式内容,是将HTML内容导入到WordprocessingML文档的好办法。Building Document Generation Systems from Templates with Word 2010 and Word 2007探讨了如何更换格式内容,使用方法,并且提供了其它开始资源。但是,这需要一直到你打开和保存包含altChunk元素的文档时才可以。这个文档包含HTML,而没有常规的的WordprocessingML markup,比如:段落,runs 以及文本。现在我们可以使用Word Automation Services导入HTML(或其它格式的可更换内容),然后将它们转换为WordprocessingML markup,这样WordprocessingML段落就有了styles。
也可以把以往的Word版本格式进行转换。比如,要构建的企业级应用有几千个用户,而他们当中就有一些人在Word 2007或Word 2003编辑Open XML文档,这时候,我们就可以将Open XML文档转换成与Word 2007或Word 2003兼容的格式。
Word Automation Services的不足
Word Automation Service缺少打印功能,但是,我们可以直接将WordprocessingML文档转换为PDF或XPS格式然后再打印。
有人可能会问,是否可以不采购和安装SharePoint Server 2010就可以使用Word Automation Services呢?答案是:Word Automation Services依赖于SharePoint 2010的其它功能,它只是SharePoint 2010的一个功能,我们购买并且安装SharePoint Server 2010才可以使用它。SharePoint 2010的标准版和企业版都包含Word Automation Services。
Word Automation Services工作原理
默认情况下,Word Automation Services随SharePoint Server 2010一起安装并且运行。如果在服务器场中使用SharePoint 2010,必须专门启用Word Automation Services。
要使用Word Automation Services,可以使用其编程接口启动转换工作(conversion job),对于每项转换工作需要指定要转换的文件、文件夹或者文档库。转换工作启动时,根据用户的配置信息,Word Automation Services在每台服务器上启动指定数量的转换线程。可以指定转换工作的执行频率,还可以指定每个转换线程执行的转换的数量。另外,还可以Word Automation Services可以使用的最大内存的百分比。
可以配置Word Automation Services,以保证其不过分使用SharePoint服务器的资源,你可以根据对SharePoint服务器的使用期望来决定该如何配置Word Automation Services。如果只是用Word Automation Services执行文档转换,你可以考虑让Word Automation Services占用大部分的processor time。当然,如果要执行的是低优先级的后台转换,你需要相应进行配置。

重要提示

建议worker process占用的处理器的数量绝对不要超过服务器减一。比如:对于4核服务器i,转换线程最多不能超过3个。
如果是在服务器场中,worker process占用的处理器数量不超过服务器场中有最少处理器那台服务器的处理器减一。
建议每分钟每个worker process最多处理90个文档转换。

编写代码除了可以启动转换实例外,还可以监控转换过程,这样当较大的转换工作完成时就可以同志用户或者发出提示。
Word Automation Services还可以进行4个方面的转换配置。
限制支持的文档格式的数量。
设置转换线程重启时可以转换的文档的数量。这非常有价值,因为无效文档会导致Word Automation Services消耗过多的内存资源。
设置Word Automation Services尝试转换文档的次数。默认情况下,这个值为2,也就是说,如果Word Automation Services转换某个文档失败,它只会再尝试一次(在当时那个conversion job中)。
设置转换线程开始后多久才开始监控。这非常有价值,因为Word Automation Services可以监控转换以确保每个转换进程没有停滞。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网