分享
 
 
 

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

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

首先是最简单的

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

strings something.doc | wc -w

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

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

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

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

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

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

RTF::Document

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

清单 1. invoice.sh 的源代码(部分)

#!/bin/sh

AMOUNT="1234.56"

DATE="06 October 2002"

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\cf0 Phaseit, Inc.

\par #$NUMBER

\par

\par Please pay \$$AMOUNT to

...

图 1. 在 Linux 服务器上生成的简单 Word 文档的抓屏

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

清单 2. invoice.pl 的源代码(部分)

use RTF::Document;

$rtf = new RTF::Document({

doc_page_width = '8.5in',

doc_page_height = '11in'

});

$fCourier = $rtf-add_font ("Courier",

{ family=monospace, pitch=fixed,

alternates=["Courier New", "American Typewriter"]

}

);

$fTime s= $rtf-add_font ("Times New Roman",

{ default = 1

}

);

$rtf-add_text( $rtf-root(), "Invoice", ...

当然,用这个办法,我手头立即拥有了 Perl 的所有功能和生产,可以“接进”外部数据源、转换内容等。

结束语

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有