word复合文档中插入的文档或图片怎么读取

flyfreely2008 2018-03-15 11:31:16
我的需求是导出doc复合文档中嵌入的图片或文件。

也看了很多讲office复合文档的资料,但是好复杂,还是不太懂怎么找嵌入对象的位置,如下图,感觉就在Ole10Native这里,看资料StartSect是数据偏移,Sizelow是数据大小,但是把这块数据拷贝出来不太对呀。


上面说的StartSect是相对哪儿的偏移呢,我是相对DirectEntry Ole10Native算的,是不是不太对?大小感觉也不太对,是不是包含了什么对象结构头?那么这个结构头的大小在哪儿找呢~~好晕~~

像OpenXML就一目了然,在zip文件夹下 有embeding和media目录,所有插入对象都在这个里面,文件名也很好获取。
那么复合文档结构究竟怎么获取插入对象的文件名和内容呢?(不知道复合文档中有没有存储嵌入对象的名称,能找到文件名最好,找不到就自己起一个也行。)

求大神指教,多谢!
...全文
1107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nslh520 2018-07-26
  • 打赏
  • 举报
回复
录宏看看。.
luoyunfeng1980 2018-05-15
  • 打赏
  • 举报
回复
Word内嵌图片始终没搞懂StyleSheet有什么用处,找不到图片在Data Stream中的偏移位置
luoyunfeng1980 2018-05-15
  • 打赏
  • 举报
回复
PPT、Word、Excel的内嵌文件我已经全部取出来了,Word内嵌图片搞不出来了,楼主弄出来了吗?
赵4老师 2018-03-16
  • 打赏
  • 举报
回复
在Word中开始记录宏,手动完成所需功能,结束记录宏,按Alt+F11键,查看刚才记录的宏对应的VBA代码。
赵4老师 2018-03-16
  • 打赏
  • 举报
回复
引用 3 楼 flyfreely2008 的回复:
自力更生弄出来了,DirectEntry 中的嵌入对象都在目录ObjectPool的子目录下,有两种对象,一种是Package类型(嵌入的word,excel属于这种),这种类型直接偏移到StartSect取数据即可。还有一种类型是我遇到问题的这种Ole10Native(jpg图片),这种类型StartSect指向的数据块前面有个头,头里面携带文件名,偏移过去头就是数据部分啦~~希望可以对后面遇到相同问题的同学有帮助~
flyfreely2008 2018-03-16
  • 打赏
  • 举报
回复
自力更生弄出来了,DirectEntry 中的嵌入对象都在目录ObjectPool的子目录下,有两种对象,一种是Package类型(嵌入的word,excel属于这种),这种类型直接偏移到StartSect取数据即可。还有一种类型是我遇到问题的这种Ole10Native(jpg图片),这种类型StartSect指向的数据块前面有个头,头里面携带文件名,偏移过去头就是数据部分啦~~希望可以对后面遇到相同问题的同学有帮助~
flyfreely2008 2018-03-16
  • 打赏
  • 举报
回复
是要用C语言实现呢,没有很多可以用的类库

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧