SharePoint 2013 Word 转换PDF服务介绍及示例
前言:在SharePoint使用過程中,經常會發現將文檔進行格式轉換的需求,之前,看到SharePoint 2013有將PPT轉換PDF文檔的服務,后來,才發現SharePoint 2010開始,就有將Word文檔轉換PDF的服務了,用起來還是不錯的。
下面,我們就來看看這個服務,如何將一個Word文檔庫批量轉換成PDF文件,或者,將單一Word文檔轉換為PDF文檔。
一、???????????? 效果展示
新建測試Word文檔,如下圖:
新建文檔庫inputList作為word存放庫,上傳測試文檔,如下圖:
?
???????? 新建文檔庫outputList,作為輸出PDF庫,里面沒有文件,如下圖:
?
執行文件轉換程序,執行后outputList文檔庫,如下圖:
發現outputList還是沒有文件,因為該服務是TimerJob的計時器任務,所以需要定時執行,去管理中心,找到該計劃任務,立即運行,如下圖:
???????? 再一次刷新outputList文檔庫,如下圖:
?
下載一個PDF文件到本地,PDF閱讀器打開,如下圖:
二、???????????? 操作步驟
1、? 新建項目,添加引用Microsoft.Office.Word.Server.dll,如下圖:
?
位置如下:
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.Office.Word.Server\v4.0_15.0.0.0__71e9bce111e9429c\Microsoft.Office.Word.Server.dll
2、? 引用類庫
using Microsoft.Office.Word.Server;
using Microsoft.Office.Word.Server.Conversions;
主要用于轉換操作的是Microsoft.Office.Word.Server.Conversions,詳細請參考附后的msdn文檔。
3、? 編寫添加核心代碼之文檔庫批量轉換
1 //創建一個轉換job 2 ConversionJob myJob = newConversionJob("Word Automation Services"); 3 4 //設置轉換job的UserToken、轉換格式 5 myJob.UserToken = site.UserToken; 6 myJob.Settings.OutputFormat = SaveFormat.PDF; 7 myJob.Settings.OutputSaveBehavior = SaveBehavior.AppendIfPossible; 8 9 //獲取轉出、轉入文檔庫 10 SPList inputLibrary = web.Lists["inputlist"]; 11 SPList outputLibrary = web.Lists["outputlist"]; 12 13 //設置并執行轉換job 14 myJob.AddLibrary(inputLibrary, outputLibrary); 15 myJob.Start();4、? 編寫核心代碼之單一文件轉換
1 //創建一個異步轉換 2 SyncConverter sc = newSyncConverter("Word Automation Services"); 3 4 //設置轉換UserToken、轉換類型等 5 sc.UserToken = site.UserToken; 6 sc.Settings.UpdateFields = true; 7 sc.Settings.OutputFormat = SaveFormat.PDF; 8 9 //讀取需要轉換的文件 10 SPFolder docs = web.Folders[siteURL + 11 "/Word_Transfer"]; 12 SPFile file = docs.Files[siteURL + 13 "/Word_Transfer/SharePoint2013Word轉換PDF服務測試文檔.docx"]; 14 15 //生成保存轉換后文檔的文件流 16 Stream fStream = file.OpenBinaryStream(); 17 SPFileStream stream = newSPFileStream(web, 0x1000); 18 19 //啟動異步轉換 20 ConversionItemInfo info = sc.Convert(fStream, stream); 21 22 //轉換后文檔添加到文檔庫 23 SPFile newFile = docs.Files.Add( 24 "SharePoint2013Word轉換PDF服務測試文檔.pdf", 25 stream, 26 true);5、? 單一文件轉換效果圖,如下圖:
?
三、???????????? Word Automation Services介紹
1、? 簡單介紹
Word Automation Services 是一項新的 SharePoint Server 2010 技術,它允許以無人參與的方式從服務器端轉換 Microsoft Word 支持的文檔。簡言之,Word Automation Services 采用 Word 客戶端應用程序的“另存為…”功能并為服務器復制該功能。
通過 Word Automation Services,以前需要您運行 Word 客戶端應用程序的任務現在可以無人參與模式自動運行,并且比以前的解決方案更可靠、伸縮性更強。
以上是msdn上,關于Word Automation Services的說明,msdn很清楚的說到,這個服務的本質是采用Word客戶端另存為的功能,所以,打開和另存的格式,和word2013客戶端基本一致。
?
2、? Word Automation Services體系結構
?
如上圖,可以看到Word Automation Services服務的原理,通過對象模型將操作進入隊列管理器,排隊等候計時器作業(TimerJob)定時執行,然后調用Word文件轉換服務引擎,將轉換后的文件存入SharePoint內容數據庫。
特別的是,這個服務并不需要在服務器端,安裝Office Word各種版本,即可完成操作,并且支持SharePoint2010和SharePoint2013版本。
3、? Word Automation Services三個基本概念
Word Automation Services 包含三個基本概念,即轉換、轉換作業和文檔隊列。轉換是一個過程,在此過程中,Word Automation Services 會接收一個具有給定格式的文件,然后以不同的格式將該文件輸出。例如,服務可以將 Word 2010 文檔 (.docx) 轉換為 PDF 文檔。
所有轉換都通過以下步驟進行:
?? 創建一個轉換作業。
?? 提供該作業的設置(例如,所需的輸出文件格式)。
?? 向該作業添加一個或多個文件。
?? 將該作業提交到文檔隊列。
所有轉換操作都基于轉換作業 的創建或使用。轉換作業將描述要轉換的文件和要對這些文件執行的操作。每個文件都將構成一個轉換項,并且每個轉換項都將映射到一個轉換作業。一個轉換作業可包含多個轉換項。
文檔隊列 是一個“先進先出”隊列,Word Automation Services 使用它根據為轉換作業設置的計劃來啟動轉換。
4、? 支持打開的文檔格式
?? 打開 XML 文件格式文檔(.docx, .docm, .dotx, .dotm)。
?? Word 97-2003 文檔(.doc, .dot)。
?? RTF 格式文件 (.rtf)。
?? 單個文件網頁(.mht, .mhtml)。
?? Word 2003 XML 文檔 (.xml)。
?? Word XML 文檔 (.xml)。
5、? 保存 Word 可以保存的文檔類型,除去支持以上支持打開的類型,還包括一下兩種:
?? 可移植文檔格式 (PDF) 文件。
?? XML 紙張規范 (XPS) 文件。
四、???????????? 完整代碼
1、文檔庫批量轉換代碼
using (SPSite site = new SPSite(siteURL)) { using (SPWeb web = site.OpenWeb()) {ConversionJob myJob = new ConversionJob("Word Automation Services");myJob.UserToken = site.UserToken;myJob.Settings.OutputFormat = SaveFormat.PDF;myJob.Settings.OutputSaveBehavior = SaveBehavior.AppendIfPossible;SPList inputLibrary = web.Lists["inputlist"];SPList outputLibrary = web.Lists["outputlist"];myJob.AddLibrary(inputLibrary, outputLibrary);myJob.Start(); } } View Code2、文檔單獨轉換代碼
using (SPSite site = new SPSite(siteURL)) { using (SPWeb web = site.OpenWeb()) {SyncConverter sc = new SyncConverter("Word Automation Services");sc.UserToken = site.UserToken;sc.Settings.UpdateFields = true;sc.Settings.OutputFormat = SaveFormat.PDF;SPFolder docs = web.Folders[siteURL +"/Word_Transfer"];SPFile file = docs.Files[siteURL +"/Word_Transfer/SharePoint2013Word轉換PDF服務測試文檔.docx"];Stream fStream = file.OpenBinaryStream();SPFileStream stream = new SPFileStream(web, 0x1000);ConversionItemInfo info = sc.Convert(fStream, stream);SPFile newFile = docs.Files.Add("SharePoint2013Word轉換PDF服務測試文檔.pdf",stream,true); } } View Code參考文獻
Word Automation Services
http://msdn.microsoft.com/zh-cn/library/ee558278(v=office.14).aspx
轉載于:https://www.cnblogs.com/jianyus/p/3345734.html
總結
以上是生活随笔為你收集整理的SharePoint 2013 Word 转换PDF服务介绍及示例的全部內容,希望文章能夠幫你解決所遇到的問題。