ASPOSE+pdf2swf+FlexPaper:.NET网页预览Office文件的高效解决方案

8 下载量 138 浏览量 更新于2024-08-30 1 收藏 88KB PDF 举报
在.NET环境中实现在网页中预览Office文件是一项常见的需求,特别是在需要文件管理系统支持文档查看的场景中。本文介绍了三种方法来解决这一问题: 1. **直接转换为HTML** (方法一) - 优点:代码实现简单,无需额外依赖,适合初学者或对代码量有严格控制的项目。 - 缺点:转换后的预览质量较低,可能会丢失Office文件的一些格式和细节。 2. **Office组件转PDF + PDF2SWF + FlexPaper** (方法二) - 实现过程:首先使用Microsoft Office组件将Office文件转换为PDF,然后借助PDF2SWF工具将PDF转为SWF(Flash)格式,最后通过FlexPaper展示。 - 优点:预览效果相对较好,可以提供更接近原貌的阅读体验。 - 缺点:代码量较大,且可能遇到配置问题,如文中提到的COM类工厂错误,这可能是由于服务器配置或身份验证问题引起的。 3. **使用Office Online服务** (方法三) - 优点:提供出色的预览质量和用户体验,但对服务器资源和复杂性要求较高,适合大型企业或具备相应技术支持的环境。 - 缺点:不适合资源有限的小型或中型企业,且可能面临API使用限制。 作者最终选择了方法二,并利用ASPOSE作为辅助工具,这是一个商业软件但也提供免费版本。具体实施步骤包括引用ASPOSE的DLL、编写转换帮助类,并在处理过程中可能遇到了特定的COM类加载异常,这表明在集成Office组件时需要注意兼容性和权限设置。 尽管文章中提到了在使用Office组件时遇到的异常,但通过改进,如结合ASPOSE来解决部分问题,团队最终找到了一个可行的解决方案。然而,对于Office文件的预览,需要高度的稳定性和容错能力,尤其是处理PPT这类动态文件时,需要额外的关注和优化。
2021-12-11 上传
【核心代码】 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 using Aspose.Cells; using Aspose.Slides.Pptx; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Web.Http; namespace DocOnlineView.UI.Controllers.MVCAPI { public class HomeController : ApiController { [HttpGet] public DataTable CourseViewOnLine(string fileName) { DataTable dtlist = new DataTable(); dtlist.Columns.Add("TempDocHtml", typeof(string)); string fileDire = "/Files"; string sourceDoc = Path.Combine(fileDire, fileName); string saveDoc = ""; string docExtendName = System.IO.Path.GetExtension(sourceDoc).ToLower(); bool result = false; if (docExtendName == ".pdf") { //pdf模板文件 string tempFile = Path.Combine(fileDire, "temppdf.html"); saveDoc = Path.Combine(fileDire, "viewFiles/onlinepdf.html"); result = PdfToHtml( sourceDoc, System.Web.HttpContext.Current.Server.MapPath(tempFile), System.Web.HttpContext.Current.Server.MapPath(saveDoc)); } else { saveDoc = Path.Combine(fileDire, "viewFiles/onlineview.html"); result = OfficeDocumentToHtml( System.Web.HttpContext.Current.Server.MapPath(sourceDoc), System.Web.HttpContext.Current.Server.MapPath(saveDoc)); }