關於C#操做PPT時遇到的「對COM組件的調用返回了錯誤HRESULT E_FAIL」錯誤的解決方法

最近在作一套和圖書有關的項目,其中有一個功能爲用戶上傳的各種文檔(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真操蛋。。。
相關文章
相關標籤/搜索