• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于C#操作PPT时遇到的“对COM组件的调用返回了错误HRESULTE_FAIL”错误的解决方法 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
最近在做一套和图书有关的项目,其中有一个功能为用户上传的各类文档(doc、docx、ppt、pptx、pdf等类型)统一转换为PDF类型。word格式的转为PDF就不用说了,推荐一个第三方DLL:Aspose.Words.dll.

Aspose这套DLL专门用来对付Office的,想必不少人都用过,很方便,例如word转pdf:
using Aspose.Words;
Document doc = new Document(word文档的服务端路径,含文件名);
doc.Save(要保存的pdf路径,含文件名, SaveFormat.Pdf);

搞定。


以上是题外话。


很可惜Aspose我没找到操作ppt的dll。。。。。


以下用Office Tool自带的类去写:

using Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;

Presentation p = new ApplicationClass().Presentations.Open(strPPTFilePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
p.SaveAs(strPDFSavePath, PpSaveAsFileType.ppSaveAsPDF, MsoTriState.msoTrue);

ps:这里需要在服务端安装MS的SaveAsPDFandXPS.exe插件。


运行到SaveAs时出现经典问题:对 COM 组件的调用返回了错误HRESULT E_FAIL。


百度了一下这个错误,深有感慨:天下文章一般抄啊。。。。。


按照网上流行的处理方法试了一下,包括开启DTC以及修改DTC属性之类的方法,依然不起作用,搞了一下午,头都大了。。。


第二天早上,突然心血来潮,打开PPT,选项--另存为--PDF,发现PowerPoint报了个错误:

“无法找到打印机 Microsoft XPS Document Writer”。

再打开Word,另存为PDF,没有此类错误。。。于是很奇怪。。。。。


奇怪归奇怪,马上打开Print Spooler服务。。。


NND,存上了。。俺这个鸡冻啊。。。。。。


总结:MS真操蛋。。。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap