当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 用低代价的服务器过程将文档处理自动化

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 53 ::
收藏到网摘: n/a


首先是最简单的
首先,对于快速的人可读性、粗略的字数统计等而言,用字符串扫描.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",
{default=>1
}
);

$rtf->add_text($rtf->root(),"Invoice",...
 
当然,用这个办法,我手头立即拥有了Perl的所有功能和生产,可以“接进”外部数据源、转换内容等。

结束语
别指望问题能自己解决。作为服务器端开发人员,部分责任就是检查身边的操作中的矛盾。如果有报表频繁丢失或编码错误,那么有个方法,就是劝诫雇员工作得久一些或更细心点。有时这很管用。但您可以用自动化工具系统地设计有效的过程。

自动化不仅仅只是能减少错误。将内容生成或处理过程自动化时,在定制和更佳质量的服务方面,会出现新的可能性。挑选下列参考资料中最符合您情况的内容,用它们解决那些在组织中已经消耗了很多时间的问题,并继续接受更有趣更有益的挑战。