1. 程式人生 > >關於C#操作PPT時遇到的“對COM元件的呼叫返回了錯誤HRESULT E_FAIL”錯誤的解決方法

關於C#操作PPT時遇到的“對COM元件的呼叫返回了錯誤HRESULT E_FAIL”錯誤的解決方法

最近在做一套和圖書有關的專案,其中有一個功能為使用者上傳的各類文件(doc、docx、ppt、pptx、pdf等型別)統一轉換為PDF型別。word格式的轉為PDF就不用說了,推薦一個第三方DLL:Aspose.Words.dll.

Aspose這套DLL專門用來對付Office的,想必不少人都用過,很方便,例如word轉pdf:

搞定。

以上是題外話。

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

以下用Office Tool自帶的類去寫:

ps:這裡需要在服務端安裝MS的SaveAsPDFandXPS.exe外掛。

執行到SaveAs時出現經典問題:對 COM 元件的呼叫返回了錯誤HRESULT E_FAIL。

百度了一下這個錯誤,深有感慨:天下文章一般抄啊。。。。。

按照網上流行的處理方法試了一下,包括開啟DTC以及修改DTC屬性之類的方法,依然不起作用,搞了一下午,頭都大了。。。

第二天早上,突然心血來潮,開啟PPT,選項--另存為--PDF,發現PowerPoint報了個錯誤:

“無法找到印表機 Microsoft XPS Document Writer”。

再開啟Word,另存為PDF,沒有此類錯誤。。。於是很奇怪。。。。。

奇怪歸奇怪,馬上開啟Print Spooler服務。。。

NND,存上了。。俺這個雞凍啊。。。。。。  

總結:MS真操蛋。。。