常見word,excel,ppt,pdf線上預覽方案,有圖有真相,總有一款適合你!
引言
之前專案需要,查找了office文件線上預覽的解決方案,順便記錄一下,方便以後查詢。
方案一
直接在瀏覽器中開啟Office文件在頁面上的連結。會彈出如下視窗:
優點:主流瀏覽器都支援。
缺點:Office文件連結在瀏覽器中開啟,會有如上圖的提示,需使用者自己選擇開啟或者儲存功能,如果客戶電腦上安裝迅雷下載軟體,會啟動迅雷下載,使用者體驗不好。
方案二
office文件轉html,首先引入com元件中office庫,然後在程式集擴充套件中引入word,excel,ppt的dll。
然後F6生成,會報如下錯誤:
解決辦法:
office文件轉換html輔助類:
Office2HtmlHelper1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 8 namespace Wolfy.OfficePreview 9 {10 public partial class Office2Html : System.Web.UI.Page11 {12 protected voidPage_Load(object sender, EventArgs e)13 {14 15 }16 protected void btnWord_Click(object sender, EventArgs e)17 {18 Button btn = sender as Button;19 switch (btn.CommandArgument)20 {21 case "docx":22 Office2HtmlHelper.Word2Html(MapPath("/Doc/分析某網站的SEO策略(外鏈篇).doc"), MapPath("/Html/"), "分析某網站的SEO策略(外鏈篇)");23 break;24 case "xlsx":25 Office2HtmlHelper.Excel2Html(MapPath("/Excel/1994-2013北京市歷年最低工資標準.xlsx"), MapPath("/Html/"), "1994-2013北京市歷年最低工資標準");26 break;27 case "ppt":28 Office2HtmlHelper.PPT2Html(MapPath("/PPT/23種設計模式詳解.ppt"), MapPath("/Html/"), "23種設計模式詳解");29 break;30 default:31 break;32 }33 }34 }35 }
測試結果:
這裡為了測試特找了含有圖片的office文件,瀏覽正常:
要求:機器需安裝office,並且office環境是純淨的,所謂純淨就是不能有多個版本,lz曾經在電腦上安裝過wps,被害苦了總是報如下錯誤:
報這個錯誤,只能哭了,網上的關於00046的解決辦法都嘗試了,不行。然後不得不重新安裝office,然後笑了。最好安裝office完整版,因為原來裝的不是完整版,不知道有沒有這方面的原因,也沒有測試,建議完整版。
方案三
office文件轉PDF,PDF轉swf,使用flexpaper+swftools實現線上瀏覽。
在操作office2007時,需安裝SaveAsPDFandXPS.exe ,安裝成功後,如圖所示:
只有安裝了SaveAsPDFandXPS.exe,程式操作office文件,才有office文件另存為pdf檔案。office2010不需要安裝了,內建有這個功能。
核心程式碼:
Office2PDFHelper Office2PDF Office2PDF.aspx測試結果:
此方案office轉pdf檔案的過程的要求與方案二要求相同。
pdf轉換完成後,就可以將pdf轉換為swf,使用flexpaper+swftools實現線上瀏覽了,可參考我之前的一篇文章:
方案四
office文件直接轉換為swf,使用flexpaper+swftool實現在先瀏覽。
office直接轉換為swf,這裡使用flashpaper來實現:
FlashPaper是一個虛擬印表機,可將word檔案直接轉化成swf格式檔案(.doc.xls .txt .pdf等檔案都可以正常生成SWF格式)。
這裡只貼出核心程式碼:
1 using System; 2 using System.Collections.Generic; 3 using System.Diagnostics; 4 using System.Linq; 5 using System.Web; 6 using System.Web.UI; 7 using System.Web.UI.WebControls; 8 9 namespace Wolfy.OfficePreview10 {11 public partial class Office2Swf : System.Web.UI.Page12 {13 protected void Page_Load(object sender, EventArgs e)14 {15 16 }17 protected void btnWord_Click(object sender, EventArgs e)18 {19 Button btn = sender as Button;20 switch (btn.CommandArgument)21 {22 case "docx":23 ConvertOffice2Swf(MapPath("/Doc/分析某網站的SEO策略(外鏈篇).doc"), MapPath("/SWF/分析某網站的SEO策略(外鏈篇).swf"));24 break;25 case "xlsx":26 Office2PDFHelper.XLSConvertToPDF(MapPath("/Excel/1994-2013北京市歷年最低工資標準.xlsx"), MapPath("/SWF/1994-2013北京市歷年最低工資標準.swf"));27 break;28 case "ppt":29 Office2PDFHelper.PPTConvertToPDF(MapPath("/PPT/23種設計模式詳解.ppt"), MapPath("/SWF/23種設計模式詳解.swf"));30 break;31 default:32 break;33 }34 }35 /// <summary>36 /// office 轉swf37 /// </summary>38 /// <param name="officePath">要轉換的office文件路徑</param>39 /// <param name="swfPath">轉換後swf的路徑</param>40 private void ConvertOffice2Swf(string officePath, string swfPath)41 {42 Process process = new Process(); //建立程序物件 43 ProcessStartInfo startInfo = new ProcessStartInfo();44 string paperroot = @"C:\Program Files\Macromedia\FlashPaper 2\FlashPrinter.exe";//這裡是FlashPrinter的路徑45 string docFile = officePath;46 string swfFile = swfPath;47 startInfo.FileName = paperroot;48 startInfo.Arguments = docFile + " -o " + swfFile;49 startInfo.UseShellExecute = false; //不使用系統外殼程式啟動 50 startInfo.RedirectStandardInput = false; //不重定向輸入 51 startInfo.RedirectStandardOutput = false; //重定向輸出 52 startInfo.CreateNoWindow = true; //不建立視窗 53 process.StartInfo = startInfo;54 process.Start(); 55 if (process != null)56 process.Close();57 58 }59 }60 }
鑑於測試時,flashpaper在將office文件轉換為swf的時候,在使用flexpaper的瀏覽時,出現轉換的內容為空,猜測:flexpaper能開啟的swf檔案與flashpaper轉的swf檔案不相容。最後使用flashpaper將office文件轉換為pdf,然後走方案三,pdf轉swf的步驟。另外本地測試時,沒問題。將專案部署在IIS上,不能瀏覽,出現卡死的情況,除錯發現,檔案太大,在office還沒完全轉換為pdf的情況下,swftool工具就去尋找pdf檔案,出現錯誤。
IIS上,無法瀏覽,查詢網上解決方案,和許可權這塊有關,按照步驟設定了,未果,有點遺憾。
方案五
使用點聚公司的weboffice控制元件,測試後發現相容性較差,放棄。有興趣的可以研究一下。
方案六
office轉pdf後,直接瀏覽器開啟,此方案鑑於目前主流瀏覽器都整合adobe reader功能,可實現直接開啟PDF檔案。將pdf檔案連結可直接開啟。
必要條件:本地需安裝adobe reader類似軟體。
方案七
http://blogs.office.com/2013/04/10/office-web-viewer-view-office-documents-in-a-browser/
總結
鑑於專案情況選擇一個適合的方案,其中有方案只是曲線救國,但是同樣能達到要求。如果您覺得對你有所幫助,不妨推薦一下,讓更多的人都能看到,謝謝你能看到文章最後。
參考文章: