通過使用 PowerPoint Automation Services,可以從 PowerPoint 二進制文件格式 (.ppt) 和 PowerPoint Open XML 文件格式 (.pptx) 轉換為其他格式。例如,您可能需要將一批 PowerPoint 97–2003 文件升級到 Open XML 演示文稿文件。您還可以在“編輯”菜單中創建自定義操作,以允許用戶按需創建 PDF 版本的演示文稿。
一、效果演示:
1、新建一個ppt文檔(office 2013,后綴pptx),添加內容,上傳到文檔庫,如下圖:
2、新建一個測試文檔庫,上傳該ppt到文檔庫,如下圖:
3、執行寫好的轉換程序,執行后,文檔庫多出一個pdf文檔,如下圖:
4、查看新生成的pdf文件,如下圖:
綜上所述,就是使用 PowerPoint Automation Services服務,將文檔庫中的ppt文檔,自動轉換成為pdf文檔。當然,也可以用於將ppt類型的文檔,批量轉換為pptx文檔。
5、科普一下PPTX類型文檔
Open XML標准的簡單介紹:Ecma Office Open XML(“Open XML”)是針對字處理文檔、演示文稿和電子表格的國際化開放標准,可免費供多個應用程序在多個平台上實現。
該標准旨在提供現有 ISO 標准所無法提供的獨特好處,其中包括能夠實現從現有二進制格式向基於 XML 的格式的高保真移植。
二、操作步驟:
首先,創建一個Windows控制台程序(4.0),引用兩個類文件(Microsoft.SharePoint.dll和Microsoft.Office.Server.PowerPoint.dll),前面的類文件就不多說了,后面的位置在C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.Office.Server.PowerPoint\v4.0_15.0.0.0__71e9bce111e9429c下,如下圖:
然后,編寫核心代碼,如下:
1 //PDF轉換,extension是原文檔后綴,驗證是不是該格式 2 PdfRequest request = new PdfRequest( 3 fStream, 4 ".pptx", 5 stream); 6 7 //開始轉換 8 IAsyncResult result = request.BeginConvert( 9 SPServiceContext.GetContext(site), 10 null, 11 null);
支持的目標文檔格式包括所有支持的源文檔格式,以及以下格式:
- .pptx(Open XML 文件格式演示文稿格式)
- .xps(Open XML 紙張規范)
- .jpg
- .png(可移植網絡圖形格式)
三、其他類成員介紹:
1、PresentationRequest 類
PresentationRequest 類(繼承自 Request 類)將 PowerPoint 97–2003 文件 (.ppt) 或 Open XML 文件格式演示文稿 (.pptx) 轉換為其他演示文稿文件格式。在上面提及的第一種方案中,您使用此類將文檔庫中的舊的演示文稿文件轉換為 Open XML 文件格式演示文稿格式。
PresentationRequest 類的構造函數方法具有三個必需參數:
- input - 采用需要轉換為 Stream 對象的文件。
- extension - 指定將轉換的文件的文件擴展名的字符串。
- output - 指定將存儲輸出的 SPFileStream 對象。
2、PdfRequest 類
PdfRequest 類(也繼承自 Request 類)將 PowerPoint 97–2003 文件 (.ppt) 或 Open XML 文件格式演示文稿 (.pptx) 轉換為 .pdf 文件。在上面提及的第二種方案中,您使用此類將演示文稿轉換為 PDF 文件。
PdfRequest 類的構造函數方法也具有三個必需參數(input、extension 和 output),這類似於 PresentationRequest 類。
3、PictureRequest 類
PictureRequest 類(也繼承自 Request 類)將 PowerPoint 97–2003 文件 (.ppt) 或 Open XML 文件格式演示文稿 (.pptx) 轉換為一組 .jpg 或 .png 格式的圖像文件。
此外,PictureRequest 類的構造函數方法具有四個必需參數。input、extension 和 output 參數與 PresentationRequest 類構造函數的參數類似。PictureRequest 類的構造函數方法也具有必需的 format 參數,該參數必需是 PictureFormat 枚舉中的常數。
4、簡單說明
其實使用起來,就是轉換不同類型,使用不同的類,但是extension的參數,填寫原文檔的擴展名,代碼很簡單,MSDN的文檔給的也非常詳細,我附后了。
四、完整代碼

1 string siteURL = "http://URL"; 2 using (SPSite site = new SPSite(siteURL)) 3 { 4 using (SPWeb web = site.OpenWeb()) 5 { 6 Console.WriteLine("Begin conversion"); 7 8 SPFolder docs = web.Folders[siteURL + 9 "/PPT_Transfer"]; 10 SPFile file = docs.Files[siteURL + 11 "/PPT_Transfer/TransferPPT.pptx"]; 12 13 Stream fStream = file.OpenBinaryStream(); 14 SPFileStream stream = new SPFileStream(web, 0x1000); 15 16 //PDF轉換,extension是原文檔后綴,驗證是不是該格式 17 PdfRequest request = new PdfRequest( 18 fStream, 19 ".pptx", 20 stream); 21 22 IAsyncResult result = request.BeginConvert( 23 SPServiceContext.GetContext(site), 24 null, 25 null); 26 27 request.EndConvert(result); 28 29 //新文檔添加到文檔庫 30 SPFile newFile = docs.Files.Add( 31 "TransferPdf.pdf", 32 stream, 33 true); 34 Console.WriteLine("Output: {0}", newFile.Url); 35 36 } 37 }
參考文獻
SharePoint 2013 中的 PowerPoint Automation Services
http://msdn.microsoft.com/zh-CN/library/sharepoint/fp179894