如何用C++ 代码直接读取微软XPS格式文档

coriocarcsdn 2018-03-23 01:56:41
最近发现,XPS 这种格式其实非常方便,效果也很好。。。 想在自己写的程序里能直接阅读这种格式的文档。 C#里有控件可以直接打开。。 C++有没有办法直接显示 XPS 文档? 有没有插件或者API 函数可以用。 我只是简单显示,不修改
...全文
1114 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
coriocarcsdn 2018-04-02
  • 打赏
  • 举报
回复
引用 12 楼 u011583120 的回复:
打开文件fopen就可以
虽然没完全解决,还是感谢大家了
热血打工人 2018-03-29
  • 打赏
  • 举报
回复
打开文件fopen就可以
  • 打赏
  • 举报
回复
引用 8 楼 coriocarcsdn 的回复:
[quote=引用 7 楼 Saleayas的回复:]这个和目标机器上打开 xps 的打开方式一致的。 最好在你的程序内部打开一个能够浏览 xps 的组件,然后用这个组件打开它,不要交给浏览器。
问题是查了好像没有组件呀[/quote] 你打开的文件可能是网路上的文件? 是用TWebBrowser组件,不是浏览器。 ShellExecute(0, 'open', '文件名', '', '', SW_SHOWNORMAL);用XPS查看器打开也可以。
Saleayas 2018-03-27
  • 打赏
  • 举报
回复
这个和目标机器上打开 xps 的打开方式一致的。 最好在你的程序内部打开一个能够浏览 xps 的组件,然后用这个组件打开它,不要交给浏览器。
ooolinux 2018-03-27
  • 打赏
  • 举报
回复
如果你用CB,可能CB版本也有关系。
coriocarcsdn 2018-03-27
  • 打赏
  • 举报
回复
引用 10 楼 早打大打打核战争的回复:
[quote=引用 8 楼 coriocarcsdn 的回复:] [quote=引用 7 楼 Saleayas的回复:]这个和目标机器上打开 xps 的打开方式一致的。 最好在你的程序内部打开一个能够浏览 xps 的组件,然后用这个组件打开它,不要交给浏览器。
问题是查了好像没有组件呀[/quote] 你打开的文件可能是网路上的文件? 是用TWebBrowser组件,不是浏览器。 ShellExecute(0, 'open', '文件名', '', '', SW_SHOWNORMAL);用XPS查看器打开也可以。 [/quote] 没,用的webbrose
coriocarcsdn 2018-03-27
  • 打赏
  • 举报
回复
引用 7 楼 Saleayas的回复:
这个和目标机器上打开 xps 的打开方式一致的。 最好在你的程序内部打开一个能够浏览 xps 的组件,然后用这个组件打开它,不要交给浏览器。
问题是查了好像没有组件呀
ooolinux 2018-03-26
  • 打赏
  • 举报
回复
是不是版本问题?
  • 打赏
  • 举报
回复
我测试了一下,在win10中用Microsoft XPS Document Writer虚拟打印机生成的.xps文件用TWebBrowser打开是正常的,没有要求下载之类的。

coriocarcsdn 2018-03-26
  • 打赏
  • 举报
回复
引用 4 楼 ooolinux的回复:
是不是版本问题?
最怕这种情况,在这个机子上正常,另一个不正常, 是版本问题,?还是浏览器设置问题?
coriocarcsdn 2018-03-26
  • 打赏
  • 举报
回复
引用 3 楼 早打大打打核战争的回复:
我测试了一下,在win10中用Microsoft XPS Document Writer虚拟打印机生成的.xps文件用TWebBrowser打开是正常的,没有要求下载之类的。
敢问你win10什么版本??
coriocarcsdn 2018-03-25
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
Delphi、CB可以很简单用TWebBrowser组件一行代码打开,用VC++需要获取一个IWebBrowser2接口指针,然后调用IWebBrowser2::Navigate方法,实际上Delphi、CB的TWebBrowser组件内部也是用了shdocvw.dll的COM接口。
感谢, 我实验了,win是可以的。 但是用在Win10上就有问题, 每次运行,就会弹出,是否需要下载,或者 打开的对话框。。。 然后触发 XPS阅读器来打开XPS 文档, 而不是在浏览器中直接打开。。。 请问这个怎么回事。。。。 在其他帖子以给分了。
  • 打赏
  • 举报
回复
Delphi、CB可以很简单用TWebBrowser组件一行代码打开,用VC++需要获取一个IWebBrowser2接口指针,然后调用IWebBrowser2::Navigate方法,实际上Delphi、CB的TWebBrowser组件内部也是用了shdocvw.dll的COM接口。

33,322

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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