轉載自:http://www.cnblogs.com/jianyus/p/3342382.htmlhtml
經過使用 PowerPoint Automation Services,能夠從 PowerPoint 二進制文件格式 (.ppt) 和 PowerPoint Open XML 文件格式 (.pptx) 轉換爲其餘格式。例如,您可能須要將一批 PowerPoint 97–2003 文件升級到 Open XML 演示文稿文件。您還能夠在「編輯」菜單中建立自定義操做,以容許用戶按需建立 PDF 版本的演示文稿。web
1、效果演示:網絡
一、新建一個ppt文檔(office 2013,後綴pptx),添加內容,上傳到文檔庫,以下圖:ide
二、新建一個測試文檔庫,上傳該ppt到文檔庫,以下圖:函數
三、執行寫好的轉換程序,執行後,文檔庫多出一個pdf文檔,以下圖:測試
四、查看新生成的pdf文件,以下圖:spa
綜上所述,就是使用 PowerPoint Automation Services服務,將文檔庫中的ppt文檔,自動轉換成爲pdf文檔。固然,也能夠用於將ppt類型的文檔,批量轉換爲pptx文檔。code
五、科普一下PPTX類型文檔orm
Open XML標準的簡單介紹:Ecma Office Open XML(「Open XML」)是針對字處理文檔、演示文稿和電子表格的國際化開放標準,可免費供多個應用程序在多個平臺上實現。htm
該標準旨在提供現有 ISO 標準所沒法提供的獨特好處,其中包括可以實現從現有二進制格式向基於 XML 的格式的高保真移植。
2、操做步驟:
首先,建立一個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);
支持的目標文檔格式包括全部支持的源文檔格式,以及如下格式:
3、其餘類成員介紹:
1、PresentationRequest 類
PresentationRequest 類(繼承自 Request 類)將 PowerPoint 97–2003 文件 (.ppt) 或 Open XML 文件格式演示文稿 (.pptx) 轉換爲其餘演示文稿文件格式。在上面說起的第一種方案中,您使用此類將文檔庫中的舊的演示文稿文件轉換爲 Open XML 文件格式演示文稿格式。
PresentationRequest 類的構造函數方法具備三個必需參數:
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的文檔給的也很是詳細,我附後了。
4、完整代碼
string siteURL = "http://URL";
using (SPSite site = new SPSite(siteURL))
{
using (SPWeb web = site.OpenWeb())
{
Console.WriteLine("Begin conversion");
SPFolder docs = web.Folders[siteURL +
"/PPT_Transfer"];
SPFile file = docs.Files[siteURL +
"/PPT_Transfer/TransferPPT.pptx"];
Stream fStream = file.OpenBinaryStream();
SPFileStream stream = new SPFileStream(web, 0x1000);
//PDF轉換,extension是原文檔後綴,驗證是否是該格式
PdfRequest request = new PdfRequest(
fStream,
".pptx",
stream);
IAsyncResult result = request.BeginConvert(
SPServiceContext.GetContext(site),
null,
null);
request.EndConvert(result);
//新文檔添加到文檔庫
SPFile newFile = docs.Files.Add(
"TransferPdf.pdf",
stream,
true);
Console.WriteLine("Output: {0}", newFile.Url);
}
}
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