.NET實(shí)現(xiàn)在網(wǎng)頁(yè)中預(yù)覽Office文件的3個(gè)方法_.Net教程
推薦:asp.net中控制反轉(zhuǎn)怎么理解?對(duì)IOC的解釋為:Inversion of control is a common characteristic of frameworks, so saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels. 我想對(duì)這一概念執(zhí)行
近日公司要搞一個(gè)日常的文檔管理的東東,可以上傳、下載各種文件,如果是office文件呢還必須得支持預(yù)覽功能,其他的都好說(shuō)但是唯獨(dú)office預(yù)覽功能比較麻煩,但是不能不做,廢話不多說(shuō)了一步步來(lái)吧。分析了下網(wǎng)易郵箱的文件預(yù)覽功能,他用的是微軟的組件,最早叫Office online,現(xiàn)在分開了叫Word online、Excel online ....等等,效果十分炫酷功能十分強(qiáng)大,但是查看了下對(duì)api的說(shuō)明發(fā)現(xiàn)對(duì)服務(wù)器的要求比較苛刻而且配置比較復(fù)雜不太適合。然后 又看了下騰訊用的是永中第三方組件,效果嘛自然比不上微軟的但是能用,綜合網(wǎng)上的一些資料大概也就那么幾種方式實(shí)現(xiàn)
1.使用Microsoft的Office組件將文件直接轉(zhuǎn)換為html文件(優(yōu)點(diǎn):代碼實(shí)現(xiàn)最簡(jiǎn)單,工作強(qiáng)度最小。缺點(diǎn):效果極差)
2.使用Microsoft的Office組件將文件轉(zhuǎn)換為PDF格式文件,然后再使用pdf2swf轉(zhuǎn)換為swf文件,也就是flash文件在使用FlexPaper展示出來(lái)(優(yōu)點(diǎn):預(yù)覽效果能接受,缺點(diǎn):代碼量大)
效果如圖:
3. 使用Office online(優(yōu)點(diǎn):表現(xiàn)完美,缺點(diǎn):不適合中小企業(yè)應(yīng)用)
綜合考慮決定使用第二種方法,經(jīng)過(guò)次次波折終于可以使用,但是有個(gè)問(wèn)題至今沒有得到解決,調(diào)用Office組件的時(shí)候有時(shí)候會(huì)出現(xiàn)如下異常:
檢索 COM 類工廠中 CLSID 為 {000209FF-0000-0000-C000-000000000046} 的組件失敗,原因是出現(xiàn)以下錯(cuò)誤: 8000401a 因?yàn)榕渲脴?biāo)識(shí)不正確,系統(tǒng)無(wú)法開始服務(wù)器進(jìn)程。請(qǐng)檢查用戶名和密碼。 (異常來(lái)自 HRESULT:0x8000401A),查閱無(wú)數(shù)資料還是不能解決,最讓人不可接受的的是office文件必須標(biāo)標(biāo)準(zhǔn)準(zhǔn)毫無(wú)容錯(cuò)能力,當(dāng)轉(zhuǎn)換ppt文件時(shí)竟然會(huì)彈出轉(zhuǎn)換進(jìn)度框!!
好吧!那么我們改進(jìn)它。
使用ASPOSE+pdf2swf+FlexPaper
關(guān)于ASPOSE大家可以到官網(wǎng)了解,這是款商業(yè)收費(fèi)產(chǎn)品但是免費(fèi)也可以使用
1、引用dll
2、編寫轉(zhuǎn)換幫助類
代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aspose.Cells;
using Aspose.Words;
using Aspose.Slides;
using System.Text.RegularExpressions;
using System.IO;
namespace Souxuexiao.Common
{
/// <summary>
/// 第三方組件ASPOSE Office/WPS文件轉(zhuǎn)換
/// Writer:Helen Joe
/// Date:2014-09-24
/// </summary>
public class AsposeUtils
{
/// <summary>
/// PFD轉(zhuǎn)換器位置
/// </summary>
private static string _EXEFILENAME = System.Web.HttpContext.Current != null
? System.Web.HttpContext.Current.Server.MapPath("/pdf2swf/pdf2swf.exe")
: System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "\\pdf2swf\\pdf2swf.exe");
#region 1.01 Wrod文檔轉(zhuǎn)換為PDF文件 +ConvertDocToPdF(string sourceFileName, string targetFileName)
/// <summary>
/// Wrod文檔轉(zhuǎn)換為PDF文件
/// </summary>
/// <param name="sourceFileName">需要轉(zhuǎn)換的Word全路徑</param>
/// <param name="targetFileName">目標(biāo)文件全路徑</param>
/// <returns>轉(zhuǎn)換是否成功</returns>
public static bool ConvertDocToPdF(string sourceFileName, string targetFileName)
{
Souxuexiao.API.Logger.error(string.Format("Wrod文檔轉(zhuǎn)換為PDF文件:sourceFileName={0},targetFileName={1}", sourceFileName, targetFileName));
try
{
using (System.IO.Stream stream = new System.IO.FileStream(sourceFileName, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite))
{
Document doc = new Document(sourceFileName);
doc.Save(targetFileName, Aspose.Words.SaveFormat.Pdf);
}
}
catch (Exception ex)
{
Souxuexiao.API.Logger.error(string.Format("Wrod文檔轉(zhuǎn)換為PDF文件執(zhí)行ConvertDocToPdF發(fā)生異常原因是:{0}",ex.Message));
}
return System.IO.File.Exists(targetFileName);
}
#endregion
分享:delphi選擇文件夾例子所需單元 示例代碼
- asp.net中控制反轉(zhuǎn)怎么理解?
- delphi選擇文件夾例子
- asp.net中C++單例實(shí)現(xiàn)問(wèn)題分析
- 簡(jiǎn)單理解Web Service三種實(shí)現(xiàn)方式
- Asp.net中Ajax與JQuery的ready函數(shù)沖突怎么辦
- asp.net中Repeater控件用法筆記
- asp.net中導(dǎo)出excel數(shù)據(jù)的方法匯總
- Asp.Net 上傳圖片并生成高清晰縮略圖
- 服務(wù)器安全狗導(dǎo)致ASP.NET網(wǎng)站運(yùn)行出錯(cuò)的一個(gè)案例
- Asp.Net其他頁(yè)面如何調(diào)用Web用戶控件寫的分頁(yè)
- ASP.NET中上傳并讀取Excel文件數(shù)據(jù)示例
- asp.net SqlParameter如何根據(jù)條件有選擇的添加參數(shù)
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 解析標(biāo)題太長(zhǎng)用省略號(hào)來(lái)代替簡(jiǎn)單辦法
- 怎樣防止ASP.NET按鈕的多次提交
- .Net教程之HTTP狀態(tài)碼200,301,302
- asp.net 圖片超過(guò)指定大小后等比例壓縮圖片的方法
- ajax.net對(duì)數(shù)據(jù)庫(kù)的插入實(shí)例
- 水晶易表調(diào)用C#的WebService,返回?cái)?shù)據(jù)集合的應(yīng)用分析
- 解析ASP.NET中C 和J#的混合應(yīng)用
- 關(guān)于.NET/C#/WCF/WPF 打造IP網(wǎng)絡(luò)智能視頻監(jiān)控系統(tǒng)的介紹
- ASP.NET2.0中控件的簡(jiǎn)單異步回調(diào)
- 怎樣實(shí)現(xiàn)MSMQ的消息加密
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索.NET實(shí)現(xiàn)在網(wǎng)頁(yè)中預(yù)覽Office文件的3個(gè)方法
- 教程說(shuō)明:
.Net教程-.NET實(shí)現(xiàn)在網(wǎng)頁(yè)中預(yù)覽Office文件的3個(gè)方法
。

