[Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!

引言

之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询。

方案一

直接在浏览器中打开Office文档在页面上的链接。会弹出如下窗口:

优点:主流浏览器都支持。

缺点:Office文档链接在浏览器中打开,会有如上图的提示,需用户自己选择打开或者保存功能,如果客户电脑上安装迅雷下载软件,会启动迅雷下载,用户体验不好。

方案二

office文档转html,首先引入com组件中office库,然后在程序集扩展中引入word,excel,ppt的dll。

然后F6生成,会报如下错误:

解决办法:

office文档转换html辅助类:

 Office2HtmlHelper
 Office2Html.aspx
 1 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.Page 11  { 12 protected void Page_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实现在线浏览了,可参考我之前的一篇文章:

FlexPaper+SWFTool+操作类=在线预览PDF

方案四

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.OfficePreview 10 { 11 public partial class Office2Swf : System.Web.UI.Page 12  { 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 转swf 37 /// </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/

总结

鉴于项目情况选择一个适合的方案,其中有方案只是曲线救国,但是同样能达到要求。如果您觉得对你有所帮助,不妨推荐一下,让更多的人都能看到,谢谢你能看到文章最后。

参考文章:

http://www.cnblogs.com/expectszc/archive/2012/04/04/2432149.html

http://www.cnblogs.com/lexlin/articles/2478027.html

http://www.cnblogs.com/gossip/p/3473024.html

http://www.cnblogs.com/expectszc/archive/2012/04/04/2432149.html

  http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载于:https://www.cnblogs.com/ydfq-home/p/5017293.html

[Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!...相关推荐

  1. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...

  2. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...

  3. C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)6 -将项目部署到IIS,及常见错误解决方案

    C#编写ASP.NET Core的Web API并部署到IIS上的详细教程(API用于准确获取Word/Excel/PPT/PDF的页数)6 -将项目部署到IIS,及常见错误解决方案 1.前言 2.安 ...

  4. ❤️强烈推荐!Word、Excel、PPT、PDF在线预览解决方案

    大家好,我是锋哥: 平时大伙开发项目的时候,经常遇到业务需求Word.Excel.PPT.PDF在线预览功能: 市面上这方面的解决方案也有一些,不做过多评价.今天主要推荐的是一个特定提前下的永久免费解 ...

  5. Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法)

    Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法) 1.需求背景 2.环境准备工作 2.1 JACOB介绍及安装 2.2 Microsoft Office W ...

  6. 前端ppt\word等等文件实现在线预览功能

    前端ppt\word等等文件实现在线预览功能 方法1:https://view.xdocin.com/view?src=你的文档地址 10天免费 方法2:https://view.officeapps ...

  7. 实现PPT的在线预览(动态,及转PDF)

    实现PPT的在线预览(动态,及转PDF) 公司的新需求,需要在网页上动态预览PPT,此处记录下,防止忘记. 之前在网上找了很多资料,比如:用POI 实现等,这里写下自己的实现方法 1.PPT 转PDF ...

  8. java实现word转pdf在线预览格式

    java实现word转pdf在线预览格式 前段时间的项目里涉及了此功能,调研过一些方案,踩过一些坑,一一总结在此. java转pdf的方案很多,但是很多都要收费,转pdf也有一些格式方面的问题. 方案 ...

  9. Java 实现word pdf在线预览

    Java 实现word pdf在线预览 最近项目有这个需求,查找了一些资料,在这整理一下. 首先,pdf的文件,浏览器本身支持预览,不需要做什么处理. controller: 简单说下思路:就是利用i ...

最新文章

  1. 交叉熵损失(Cross Entropy Loss)计算过程
  2. struts2的action之间和action向jsp的参数传递
  3. Docker进阶-资源管理Swarm+Portainer
  4. java 视图对象转换_java-如何从onItemSelected()方法返回的视图对象...
  5. 商务搜索引擎_2019年中国网民搜索引擎使用情况研究报告
  6. python qt gui快速编程 pdf_翻译:《用python和Qt进行GUI编程》——介绍
  7. 错误调试:Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4
  8. Atitit.linq java的原理与实现 解释器模式
  9. matlab fread函数详解
  10. 台式计算机m4350,联想 商用台式机 ThinkCentre M4350t
  11. ***YZJ的牛肉干***
  12. python 基于numpy的线性代数运算
  13. 在EXCEL2010中添加打印水印
  14. 一、概述(知识图谱构建射雕人物关系)
  15. Apache+php安装整理
  16. RxJava过滤操作符 filter
  17. 在CentOS 7中安装Panoply
  18. 磁盘调度算法笔记和练习题
  19. 【测试开发工程师 / 测试工程师】面试题整理
  20. D - Folding Machine ( dfs )

热门文章

  1. 手机储存卡被写保护怎样删掉
  2. 高校实验室安全VR教育培训系统
  3. Eoe客户端源码分析---SlidingMenu的使用
  4. 使用定时器按键扫描数码管制作一个可存储数据的秒表
  5. nor flash xip
  6. 详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
  7. S32K的flexcan组件使用(RxFIFO+DMA)
  8. 全球及中国藻类DHA和ARA油行业需求调研与投资方向建议报告2022版
  9. 2021-12-8数字通信的过程
  10. python飞船游戏(四)