用低代价的服务器过程将文档处理自动化

2009-05-13 01:07:53来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


首先是最简单的
首先,对于快速的人可读性、粗略的字数统计等而言,用字符串扫描.DOC文档通常是足够了。像

stringssomething.doc|wc-w

这样的命令返回的字数统计值通常误差在10%以内。

对这样粗糙的方法进行改进会非常困难。问题的核心在于.DOC作为一种格式,在这些年里已经进行了很大的更改。难于跟踪。

相关的.RTF有几个优势:它用ASCII进行编码,几乎具有人工可读性,并且它不太可能被病毒传染。而且,这些年里它已经显得稳定多了;1997年的阅读器多半能理解今年编写的.RTF,反之也是。在我所管理的一些网络上,我进行了流量限制:把.DOC排除在外,而赞成使用.RTF,以预防恶意代码。原则上说,这剥夺了用户使用某些字处理特性的权利,而这些特性只能从.DOC获得。实际情况是,我从未遇到过一个这样的用户:他(或她)真正使用了一种用.RTF无法达到的效果。

下面的参考资料一节,列出了几个轻量级Word阅读器:wvWare、catdoc等。这些通常能快速简便地进行安装和使用。大多数UNIX桌面用户现在都知道,UNIX上的OpenOffice完全可以用来替代WindowsWord的常见用途,而且非常擅长读和写.DOC文档。OpenOffice公开了可编制脚本的接口,这使得它可以用Java、C++、Python、OpenOffice.orgBasic、StarScript、CORBA或OLEAutomation对文档内容进行编程。OpenOffice还集成了使用这种技术的宏录制。本质上需要商业许可证的产品StarOffice(TM)也是如此。

事实上,尽管StarOffice在形式上与OpenOffice是有区别的,本专栏文章完全着重于描述后者,因为根据后者的网站,“StarOffice软件的未来版本,从6.0开始,将使用OpenOffice.org源代码、API(应用程序编程接口)、文件格式和参考实现进行构建”(请参阅参考资料)。在今后的OpenOffice实现中,“UNO(通用网络对象,UniversalNetworkObject)是个基于接口的组件模型”。

可是,OpenOffice是处理Word文档相当“笨重的”方式。它至少需要图形用户界面(GUI)服务,通常还需要相当细致的安装和多个编程的过程。面向XML的“格式化对象”(FO)与它非常相像:尽管功能很强大,但是它在开始工作之前需要进行许多工作。如果您不想进行这些我常常碰到的简单操作-生成固定格式的.RTF发票、“擦掉”收入状况周报表、用特定于阅读器的信息定制Web下载等等这类的事-那么您应该研究.RTF库的直接语言绑定。其中最好的是RobertRothenburg的PerlAPI。

RTF::Document
对于最简单的.RTF生成过程来说,进行简单的剪贴就够了。您可以用shell脚本,用参数表示象图1这样的生成。

清单1.invoice.sh的源代码(部分) 
#!/bin/sh

AMOUNT="1234.56"
DATE="06October2002"
NUMBER="9999/3333"
PO="6543"

FORM="{\rtf1\ansi\deff0\deftab720{\fonttbl...
\par\pard\plain\f3\fs20
\par\pard\qr\plain\f2\fs24\cf0$DATE
\par\pard\plain\f2\fs24\cf0Phaseit,Inc.
\par#$NUMBER
\par
\parPleasepay\$$AMOUNTto
...
图1.在Linux服务器上生成的简单Word文档的抓屏


为了使编程更加结构化、可伸缩和可维护,请使用Perl的RTF模块。这些模块使得有可能编写出像清单2中所示的代码。

清单2.invoice.pl的源代码(部分) 
useRTF::Document;

$rtf=newRTF::Document({
doc_page_width=>'8.5in',
doc_page_height=>'11in'
});
$fCourier=$rtf->add_font("Courier",
{family=>monospace,pitch=>fixed,
 alternates=>["CourierNew","AmericanTypewriter"]
}
);
$fTimes=$rtf->add_font("TimesNewRoman",

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:服务器诊所:PDF自动生成专业质量输出

下一篇:设置一个企业级的LinuxPOP3服务器