从流中打开Word(.doc)文档

3

我有一堆存储在SQL数据库中的Word文档(.doc),需要打开、清理标题、主题等属性,然后将文件保存回数据库。

从流中打开“.doc”文件是否可能?

2个回答

1

Word无法从内存流中打开.doc文件。要打开文件,您必须首先将文档保存到临时位置。

然而,Word鲜为人知的RTF转换器界面可用于从以RTF格式流加载文档。如果对您来说使用RTF而不是二进制格式是一个选择1,则可以查看WinWord Converter SDK:

如何获取WinWord Converter SDK (GC1039)

对于导入转换器,您需要实现ForeignToRtf方法,Word将调用该方法来接收RTF输入。

1实际上,您仍然可以将文件保存为.doc格式;但是,您需要使用SDK先将.doc文件转换为RTF,然后在Word中打开RTF流。二进制格式与RTF格式之间的转换应该大部分是无损的,因为RTF格式是与二进制格式同步开发的。但是,需要注意的是,使用RTF转换器接口将无法使用OpenXML/Office 2010引入的任何新功能。


正如我在答案中提到的那样,我非常确定 Word 支持 IPersistStream 接口。我可以肯定地说它支持 IPersistFile 接口,因为我曾经在 Word 中使用过这个接口来实现一个真正的“另存为”功能。有关转换为 RTF 格式再转回 Word 格式的说明:尽管它们是同时开发的,但 RTF 并不支持 Word 的所有格式细节。如果您采用这种转换方式,您需要非常仔细地测试您的文档,或者最好一开始就全部使用 RTF 格式。 - DarinH

1

我非常确定Word DOCUMENT对象实现了IPersistStream(COM接口)。 我 +确信+ 它实现了IPersistFile。

这并不是最容易使用的东西,而且由于它是COM,与.NET流的互操作性不太好,但我相信可以使用IPersistStream实现它。


+1 我认为可以采用类似于这里描述的技术来完成:http://www.delphidabbler.com/articles?article=14 - Wodzu

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