Ruby中合并Word文档

7

我有N份Microsoft Office 2003的Word文档,想把这些文档按照一定顺序合并成一个单独的Word文档。请问如何使用Ruby完成此操作?谢谢!

这些文档只是在Microsoft Office中创建的,我不使用Windows系统,希望能够使用非Windows系统的解决方案。

编辑:如果这些文档是odt格式而不是doc格式,那么这个过程会容易一些吗?


我在其他应用程序中使用JODConverter。我认为我可以使用它来进行odt到doc的转换。 - Vijay Dev
嗨,宅男,我还没有时间来检查这个。很快会让你知道。谢谢! - Vijay Dev
@Vijay Dev:那部分你需要自己想办法解决。如果你了解Word OM,这会比较容易些。 - Todd Main
@Vijay Dev:只是想跟进一下,看下面的回答是否解决了你的问题。 - Todd Main
@Otaku:你好!由于规格变更,我需要放弃这个问题。之后没有再尝试过。感谢你的帮助! - Vijay Dev
显示剩余3条评论
3个回答

3

如何自动化?你能解释一下吗?此外,我的是Linux服务器,如果有关系的话。 - Vijay Dev
1
博客对于教授自动化操作非常有帮助。但是,由于它们只适用于Windows系统,或者可能在Wine模拟器下运行。因此,您最好考虑自动化Open Office。 - stimms

2
我所知道的唯一非Windows解决方案是POI中的Ruby绑定。之后,代码将与此.NET代码非常相似:使用VB.NET合并Word文档的页面作为单个文档。您需要的关键代码是按您选择的顺序使用Selection.InsertFile插入尽可能多的文档。
对于ODT文档合并,请参见此线程:http://cpanforum.com/threads/9938。

人们报告使用JRUBY通过docx4j取得了成功;我们有一个商业组件叫做MergeDocx,也可以使用。 - JasonPlutext

0

理解,几乎任何对这个问题的回答都将取决于您使用的文档文件的限制...

话虽如此,在我看来,如果您要这样做,第一选择应该是将它们转换为更容易解析的格式 - RTF 是一个很好的例子,如果您可以将它们转换为这种格式,O Reilly 的 RTF Pocket Guide 是一个了解文件结构的绝佳资源。如果您能在Linux机器上安装AbiWord,转换文件非常简单。从命令行运行:

abiword --to=rtf some_file_name.doc

当然,在Ruby中,你只需包装这些命令。
合并更加复杂--它将取决于你的文件。你将不得不做出一些程序员决策,例如是否要在每个单独的文档中合并样式表、字体表等等。内容只是坐落在rtf文件的中间,但所有语义和样式数据都需要进行选择。这里没有'一种方法',因为它取决于你想要的结果。这就是RTF Pocket Guide的重要帮助之处 - 基本上,你需要使用它来了解rtf的结构,并决定你想要什么和不想要什么。
否则,如果你只想要没有任何语义的内容,可以将它们转换为txt文件,然后连接它们。这个命令非常类似:
abiword --to=txt some_file_name.doc

这很简单,它只会分割文本,然后您可以将其连接起来并完成。但是,您将失去任何格式的全部格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接