【问题标题】:Extract object from on hdd ole binary从 hdd ole 二进制文件中提取对象
【发布时间】:2012-08-29 12:45:10
【问题描述】:

Lotus Notes 文档中嵌入的 OLE 对象存在特定问题。

用户已附加 f.e. Word 或 Excel 文档作为 OLE 对象(在 Lotus Notes 文档中),我需要从 OLE 获取这些原始文档作为可以在其主机应用程序中打开的文件附件。

使用 Lotus Notes C API,我设法将 OLE 对象分离到 HDD。 问题是 Word 文档嵌套在 Word.Document.8 或 Word.Document.12 目录中的 OLE 二进制文件中。仅将 OLE 二进制文件重命名为 doc 或 docx 不起作用。

这就是我编写读取二进制文件和提取文档的 Java OLE 包的原因。 这可行,但...有一个缺点。

我必须解析 OLE 类名,如果是 Word.Document.8,我需要编写代码手动从 word.document.8 目录中提取所有流并将它们保存为新的 .doc OLE 对象,以便 Word正确打开。

这对 Office 文档来说并不难,但所有类型的东西都可以嵌入到 OLE 中,我无法涵盖所有​​可能性。

是否有可以从 OLE 二进制文件中提取嵌入对象的 C api 函数(原始文件名不重要,但扩展名重要)? 双击 OLE 对象时,Lotus 或 Word 是如何工作的? 它必须以某种方式重建嵌入式文档? 我也想这样做:-)

感谢您的帮助。

【问题讨论】:

  • 这不是关于编程嵌入式系统。重新标记

标签: c extract ole lotus


【解决方案1】:

尝试自动化 Notes 以将嵌入的对象复制到剪贴板,然后从剪贴板获取 CF_EMBEDDEDOBJECT 格式,这类似于将 OLE 项目拖到 Windows 资源管理器以创建废品文件。

参考和有用的页面:

[CiteHistory Record]

【讨论】:

  • 这不起作用:Shell 创建废料文件时,它将数据表示为嵌入对象。当废料转移到另一个容器时,它会作为嵌入对象转移,即使它正在返回到原始文档中。您的应用程序负责确定废料中包含的数据格式,并在必要时将数据恢复为原始格式。 看来我将获得与现在相同的 OLE 二进制文件。
【解决方案2】:

为了在 C API 中提取文件,我会看一下 NSFNoteCipherExtractFile 函数(和 NSFNoteCipherDecrypt)。如果使用 8.x 或更高版本。

【讨论】:

    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多