我遇到了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如何执行? 它必须以某种方式重建嵌入式文档? 我想以同样的方式做到: - )
感谢您的帮助。
答案 0 :(得分:0)
尝试自动化Notes将嵌入对象复制到剪贴板,然后从剪贴板获取CF_EMBEDDEDOBJECT格式,这类似于如何将OLE项目拖动到Windows资源管理器以创建剪贴文件。
参考文献&有用的页面:
答案 1 :(得分:0)
为了在C API中提取文件,我将看看NSFNoteCipherExtractFile函数(和NSFNoteCipherDecrypt)。如果使用8.x或更高版本。