經常會有客戶問,在SharePoint中,如何在瀏覽器中查看與編輯文檔,通常給出的解決方案是集成Office Web App。
而在實際應用過程中,客戶通常會要求實現PDF文件在線查看,對於PDF文件,office web App微軟一直沒有提供官方支持。爲了實現這個功能,開發人員通常採用如下兩種方式:
1.修改SharePoint,使PDF文件默認在瀏覽器中打開,這種方式,實質上是告訴瀏覽器,文檔由瀏覽器調用,根據本地文檔關聯調用本地客戶端進行呈現,這種方式就要求客戶端安裝adobe reader纔可以正常打開,否則仍舊顯示下載框。
2.文檔轉換方式,通常思路是文檔轉換成圖片或文檔轉換成swf文件,實際項目中常用的是類似百度文檔的方式,轉換成swf文件,通過程序開發自定義界面進行呈現。
具體做法是上傳時,自動轉換一份swf文件,然後通過flashpaper進行展示,這種方式控制粒度高,可以防止複製與下載,但需要進行一定的二次開發纔可以實現,而且由於文檔同時存在兩個副本,信息一致性也需要考慮。
一個好的消息是在今年3月份的時候,微軟發佈了Office Web Apps Server 2013的一個更新,可以在這裏下載:KB2760445。這個更新中包括了若干新功能,其中最主要的就是支持了PDF格式的在線查看。
部署過程摘要
在一臺加域的服務器上安裝Office Web App2013,然後安裝該KB,安裝完成後,打開PowerShell,輸入如下命令,進行Farm初始化(注owa2013爲office web app服務器名稱):
New-OfficeWebAppsFarm –InternalURL http://owa2013 -ExternalUrl http://owa2013 –AllowHttp –EditingEnabled -ClipartEnabled –TranslationEnabled
然後在 SharePoint服務器上啓動PowerShell,輸入如下腳本與office web app服務進行綁定
Add-PSSnapin Microsoft.SharePoint.PowerShell
New-SPWOPIBinding -ServerName owa2013 -AllowHTTP
Set-SPWopiZone internal-http
如果使用HTTP連接而非https,則需要執行以下命令:
$sts = (Get-SPSecurityTokenServiceConfig)
$sts.AllowOAuthOverHttp = $true
$sts.Update()
執行完成後,發現PDF文件已經可以在線查看了:
後續產生的問題
1.文檔列表中,無法直接預覽文檔
解決方法:
Designer打開站點,創建pdfview.js文件,文件內容如下(注:我母版頁中引用了jquery)
function addPdfPreviews() {
SP.SOD.executeOrDelayUntilScriptLoaded(function () {
filePreviewManager.previewers.extensionToPreviewerMap.pdf = [embeddedWACPreview, WACImagePreview]
embeddedWACPreview.dimensions.pdf= { 379, height: 252}
}, "filepreview.js");
}
$(function(){addPdfPreviews();});
修改默認母版頁,添加JS引用如下:
<script language="javascript" src="/Themes/js/jquery-1.4.2.min.js"></script>
<script language="javascript" src="/Themes/js/pdfView.js"></script>
保存母版頁,刷新界面進行測試,可以看到,PDF文件預覽可以正常顯示了
2.搜索結果中,也無法直接預覽文檔
解決方法:
在網站集管理中點擊“搜索結果類型”
在類型列表中找到“PDF”,點擊“複製”
在彈出的新建類型界面中輸入類型名稱,並如圖所示,將結果類型改爲“Word項”
點擊“保存”後,重新搜索,可以看到搜索結果的pdf文件已經可以正常預覽了。
本文參考:
http://www.cnblogs.com/erucy/archive/2013/07/05/3173707.html