SharePoint 2013 文檔庫中PPT轉換PDF

轉載自: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

clip_image006

二、新建一個測試文檔庫,上傳該ppt到文檔庫,以下圖:函數

clip_image007

三、執行寫好的轉換程序,執行後,文檔庫多出一個pdf文檔,以下圖:測試

clip_image008

四、查看新生成的pdf文件,以下圖:spa

clip_image009

  綜上所述,就是使用 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下,以下圖:

clip_image010

  而後,編寫核心代碼,以下:

複製代碼
 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 文件格式演示文稿格式)
  • .pdf
  • .xps(Open XML 紙張規範)
  • .jpg
  • .png(可移植網絡圖形格式)

 

3、其餘類成員介紹:

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的文檔給的也很是詳細,我附後了。

 

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

相關文章
相關標籤/搜索