如何提取 OLE 容器的内容?
我需要打开 MS Word 文件 (.doc) 并提取其组成文件(“[1]CompObj”、“WordDocument”等)。像 7-zip 这样的东西可以用来手动执行此操作,但我需要以编程方式执行此操作。
我收集到 Word 文档是一个 OLE 容器(因此可以使用 7-zip 查看其内容),但我无法弄清楚如何(使用 C++):
- 打开 OLE 容器
- 提取每个组成文件并保存 a
我发现了一些 OLE 自动化的示例(例如 此处)但我想做的似乎不太常见,而且我没有找到具体的例子。
如果有人对使用 OLE 的 API(?!)和教程有任何想法,我将不胜感激。任何代码示例也是如此。
I need to break open a MS Word file (.doc) and extract its constituent files ('[1]CompObj', 'WordDocument' etc). Something like 7-zip can be used to do this manually but I need to do this programatically.
I've gathered that a Word document is an OLE container (hence why 7-zip can be used to view its contents) but I can't work out how to (using C++):
- open the OLE container
- extract each constituent file and save it to disk
I've found a couple of examples of OLE automation (eg here) but what I want to do seems to be less common and I've found no specific examples.
If anyone has any idea of either an API (?!) and tutorial for working with OLE I'd be grateful. Ditto any code samples.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它称为复合文件,是结构化存储 API 的一部分。您从 StgOpenStorageEx() 开始。对于 Word .doc 文件来说,它的成本很低,流本身具有复杂的二进制格式。要真正读取文档内容,您需要使用自动化,让 Word 读取文件。这在 C++ 中很少实现,但该项目向您展示了如何实现。
It is called Compound Files, part of the Structured Storage API. You start with StgOpenStorageEx(). It buys you little for a Word .doc file, the streams themselves have a sophisticated binary format. To really read the document content you want to use automation, letting Word read the file. That's rarely done in C++ but that project shows you how.
本网站 http://www.endurasoft.com/vcd/ststo.htm 包含教程、API 信息和代码示例都可以满足我想要的一切。
This site http://www.endurasoft.com/vcd/ststo.htm contains both tutorial, API information and code sample that does everything I was looking for.