在線文檔預覽方案-office web apps


  最近在做項目時,要在手機端實現在線文檔預覽的功能。於是百度了一下實現方案,大致是將文檔轉換成pdf,然后在通過插件實現預覽。這些方案沒有具體實現代碼,也沒有在線預覽的地址,再加上項目時間緊迫。只能考慮其它方案,這時微軟的office web apps方案映入眼簾,於是和同事一起用一台PC機折騰了幾天終於完成了部署,希望通過本篇記錄下安裝過程和遇到的坑。目前使用該方案的有 明道 微軟,我部署的服務地址:http://myscloud.vicp.cc/op/generate.aspx 下面是在線預覽的效果圖。

  使用該方案的好處:

  1.現有代碼改動量很小,幾乎可以忽略不計。

  2.無需自己寫代碼,只需一台服務器即可

  3.支持文檔類型很全面,doc,ppt,xls,docx,pptx,xlsx,pdf。

  4.手機和pc都支持,支持文檔緩存,分頁瀏覽。

  

閱讀目錄

安裝部署步驟

  介紹完特性以后,下面介紹服務的安裝部署。個人感覺初次部署可能會覺得比較困難,因為這個服務限制還是很多的。

服務器環境要求

  1.轉換文檔需要兩台服務器,一台為轉換server,另外一台為域控server。(安裝office web apps的服務器必須加域才能安裝成功,如果沒有加域后面步驟會出現錯誤,疑難問題里面會介紹)

  2.系統要求為widow server2008R2 64bit SP1或者以上,NET Framework 4.5,KB2592525,Windows PowerShell 3.0,IIS,保證80 443 809端口不被占用,確保當前機器沒有安裝office,確保當前機器沒有安裝Exchange,sharepoint,lync server,sql server

  3.服務器帶寬和內存越高越好,測試發現比較耗性能,原因得從服務的實現原理上講起。office web apps服務會通過用戶提供的文檔src,從src服務器上把文檔下載下來,然后進行轉換,根據文檔名稱進行緩存,轉換完成以后返回。 帶寬越大下載過程使用的時間越短,服務器性能越好轉換速度越快。

  

  域控服務器安裝這里就不介紹了,有需要的可以參考域服務器安裝部署這篇文章。

軟件准備

  1.本文安裝步驟所需的軟件我都放在百度雲盤了,可以進行下載。下載地址:http://pan.baidu.com/s/1hrBeYqw

 步驟

  下面的安裝步驟很重要,不按順序安裝可能出現未知錯誤,很難解決,所以建議按照下面步驟進行安裝。

  1.安裝.net framework4.5

  2.安裝iis7

  打開服務器管理,添加角色

這里說明一點,把這些功能全部都勾上,后面運行命令的時候會用到。

 3.安裝補丁

  Windows Server 2008 R2 x64 Edition 更新程序 (KB2592525)_Windows6.1-KB2592525-x64.msu

 4.安裝powershell

  Windows6.1-KB2506143-x64.msu

 5.安裝墨跡支持

  服務器管理,添加功能

  6.安裝office web apps

  官網下載URLhttp://download.microsoft.com/do ... D8639/wacserver.exe

  

    7.安裝office web apps語言包

  wacserverlanguagepack.exe

  8.安裝office web apps sp1補丁包

  9.通過PowerShell配置Office web apps

  這個步驟是最容易出錯的,記得要使用域賬戶右鍵管理員方式運行

Import-Module OfficeWebApps
New-OfficeWebAppsFarm -InternalURL http://xx.domin.com  -ExternalURL http://xx.domin.com  -AllowHttp -EditingEnabled -OpenFromUrlEnabled

 New-OfficeWebAppsFarm 的使用及各參數含義可以去微軟官網查看:http://technet.microsoft.com/zh-cn/library/jj219436.aspx

-InternalURL:內網瀏覽地址,http://xx.domin.com 其中 xx表示計算機名 domin.com 表示域名

-ExternalURL:外網瀏覽地址

-AllowHttp 允許80端口訪問

-OpenFromUrlEnabled 允許通過url方式進行預覽

-CacheLocation  緩存文件存放路徑 默認是C:\ProgramData\Microsoft\OfficeWebApps\Working\d 

-CacheSizeInGB  最大緩存文件大小 單位GB 默認為15GB

關於-InternalURL的怎么設置,可以計算機右鍵-》屬性進行查看  計算機全名則是需要的地址

執行完命令就可以在iis中查看了,可以看到自動添加了兩個站點,通過上面的地址http://xx.domin.com 進行瀏覽,出現下面的界面則表示整個安裝完成了。

可以通過 http://xx.domin.com/hosting/discovery查看描述

使用過程中如果想修改服務配置,可以通過Set-OfficeWebAppsFarm命令進行修改

Set-OfficeWebAppsFarm -AllowHttp

 我這邊裝完以后通過花生殼映射了一個外網地址,大家可以訪問預覽(網絡可能不穩定)。http://myscloud.vicp.cc/op/generate.aspx

使用示例

    安裝完成office web apps以后,你可以采用以下方式實現在線預覽。

//在線預覽服務地址
var strOfficeApps="https://docview.mingdao.com";

//文檔地址,需要外網能訪問
var strFileUrl="http://74881.vhost65.cloudvhost.net/doc/test.docx";

var strUrl =strOfficeApps+"/op/embed.aspx/src="+encodeURIComponent(strFileUrl);

  這樣生成的地址即可以在瀏覽器中預覽了,你可以把這個地址嵌入到iframe中進行使用

<iframe src='strUrl' width='476px' height='288px' frameborder='0'>This is an embedded <a target='_blank' href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank' href='http://office.com/webapps'>Office Web Apps</a>.</iframe> 

 

服務器部署疑難問題

    下面列舉一下安裝部署過程中出現的幾個問題及解決辦法

  1.New-OfficeWebAppsFarm : 登錄失敗: 未知的用戶名或錯誤密碼

PS C:\Users\Administrator> New-OfficeWebAppsFarm -InternalURL "http://xxxx" -AllowHttp -EditingEnabled
New-OfficeWebAppsFarm : 登錄失敗: 未知的用戶名或錯誤密碼。
所在位置 行:1 字符: 1
+ New-OfficeWebAppsFarm -InternalURL "http://xxxx" -AllowHttp -EditingE ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [New-OfficeWebAppsFarm], AuthenticationException
    + FullyQualifiedErrorId : System.Security.Authentication.AuthenticationException,Microsoft.Office.Web.Apps.Adminis
   tration.NewFarmCommand


如果碰到這種問題,可能是使用的本地賬戶登錄的,需要切換到域賬戶下面操作。

 2.HTTP 錯誤 500.21

訪問  http://xxxx/hosting/discovery

HTTP 錯誤 500.21 - Internal Server Error
處理程序“DiscoveryService”在其模塊列表中有一個錯誤模塊“ManagedPipelineHandler”

出現這種錯誤是第一步安裝的.net framework4.5未在iis中注冊導致的,以管理員方式打開cmd,運行以下命令
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
.\aspnet_regiis.exe -iru Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.17929 用於在本地計算機上安裝和卸載 ASP.NET 的管理實用工具。 版權所有(C) Microsoft Corporation。保留所有權利。 開始安裝 ASP.NET (4.0.30319.17929)。 ............. ASP.NET (4.0.30319.17929)安裝完畢。
iisreset /restart /noforce 正在嘗試停止... Internet 服務已成功停止 正在嘗試啟動... Internet 服務已成功啟動

 3.文件太大解決方案(>10M)

 服務默認支持的最大文件大小是10M,大於10M會報錯。可以通過以下步驟解決此問題 OpenFromUrlMaxFileSizeInKBytes=(System.Int32)512000 后面不要加分號

 

1.打開如圖文件Settings_Service.ini,文件目錄為C:\Program Files\Microsoft Office Web Apps\OpenFromUrlHost
;
--- OpenFromUrlHost --- ; ; The application root for the current application ApplicationRoot=(System.String)/oh

在默認內容后添加(512000/1024M,可以根據自己的需求設定)
OpenFromUrlMaxFileSizeInKBytes=(System.Int32)512000

2.修改 C:\Program Files\Microsoft Office Web Apps\OpenFromUrlWeb 下的Settings_Service.ini,進行相同的修改
3.重啟office web apps服務


再重新試一下>10M的文件,發現可以訪問了

 4.文檔地址為ip不是域名的預覽報錯解決方案

  比如文檔地址為http://10.5.192.168/A.docx 這個時候預覽會報錯 ,而相應的地址為http://mydoc.com/A.docx 域名的則是好的。這個問題估計是微軟自己的安全驗證問題,為了解決此問題我采取了一種地址轉發的方式。

  步驟:在Http80站點下添加轉發應用程序,站點文件路徑一定要選在C:\Windows\System32\drivers\etc 下,並且賦予讀寫權限,為了方便修改hosts文件

   正常預覽訪問的是:http://mydoc.com/op/embed.aspx/src=文檔地址,現在改為http://mydoc.com/Redirect/embed.aspx/src=文檔地址

代碼會判斷如果是ip則在hosts添加ip和域名的映射關系

Redirect站點代碼下載地址:Redirect站點

總結

  整個方案不需要自己額外寫代碼,麻煩的地方在於安裝部署,出現錯誤很難排查,主要還是因為資料少。所以建議安裝到office web apps步驟時,用ghost工具備份一下系統,以免出錯從頭開始安裝。

  如果你在安裝過程中遇到奇怪的錯誤並且解決了,希望可以告訴我一下,以供我補充完善疑難問題這一項。目前該方案已經在購買服務器實施的過程中,有需要實現在線文檔預覽的可以考慮使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM