我正处于尝试替换基于 Microsoft Office 应用程序(Word 和 Excel)的现有文档生成系统的早期阶段。
该系统每年运行一次,生成三种不同类型的 30 多万份个人文档(新系统可能针对单个文档进行“按需”处理,而不是一次性批量处理)。其中两种类型主要是带有值占位符的标准文本,以及用于包含/排除某些元素(标准段落和/或值)的一些条件逻辑。其中一种类型包括基于单独计算的条形图。替换和条件逻辑的所有值都来自 ASCII 文件,但有些值是根据数据计算得出的。
当前系统非常慢且容易出错(运行时),并且需要一个由机器、线程和消息队列组成的复杂系统来将处理资源扩展到能够在两周左右的时间内完成工作的水平。基本上,有三个 Word 文档模板,其中包括值占位符和条件逻辑和文本。使用 Office 互操作库处理模板以创建实例文档。对于其中一种类型,Excel 用于创建条形图,该条形图被注入(OLE 嵌入)到实例文档中。然后将 Word 实例文档转换为(保存为)PDF。
我对 TeX 了解不多(在我使用 Emacs 的多年时间里,我曾与它有过接触),但它似乎可以作为替代上述庞然大物的一个良好基础。问题是,我需要一些指导,了解 TeX 是否是一条不错的选择(性能是关键因素),以及一些可以完成更模糊的所需任务的资源指针(我知道 PDF 生成不是问题)。
最终系统将在 Windows 机器上执行,并且程序处理很可能使用 .NET 或 Java 完成。
答案1
首先,我只能与评论者一致地说 TeX 无疑是您可以找到的用于此类任务的最佳系统之一。
由于您的问题不太具体,而且已经给出了一些提示,我仅给出一些可比较用途的示例和进一步的建议。欢迎提出更具体的问题 ;-)
一个完全用 TeX 实现的(商业)数据驱动文档生成系统的例子是我的DocScape。你可以找到一些参考资料这里;我也举了一些例子这个答案。
给你一些性能数据:德国联邦政府(“Niedersachsen”)正在使用基于 TeX 的系统发布预算文件(预算计划、报告和许多其他内容)。大约有 16,000 名来自州政府的人参与维护数据。他们每个人都可以随时生成预览(大约 2-10 页),这导致最多可以同时生成 300 份文档(在 AIX 主机上)。
每年一次,我们会打印几卷 1000 多页的书,外加几个中间版本。
例如参见上一份预算报告。
总的来说,我可能不是评论性能的合适人选,因为从宏编程的角度来看,DocScape 效率很低,所以我无法真正报告我自己的项目的任何速度记录。
另一方面,TeX 本身无疑是效率的典范,因为至少在过去 30 年里它没有受到软件膨胀的影响。所以你根本不会遇到任何性能问题。特别是如果你要生成大量独立文档,你可以并行运行与机器中的处理器数量一样多的 TeX 进程,从而进一步加快速度。
这里有一些关于如何进行的进一步提示。
- 首先,我将预处理输入(ASCII)数据,将其转换为 XML 或某些“伪”TeX 数据符号。
- 这并不意味着您需要生成完整的 TeX 文档,但至少插入一些控制序列来标记文档和数据结构、图像等将使以后使用 TeX 进行处理变得更加容易。
- 我一定会在预处理期间完成所有数字运算,尤其是条形图。然后可以使用 TikZ 绘制图表本身。