关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复164或者20151021可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me!
上一篇博客: 发布后,有读者问,可以为其他类型附件做个预览功能吗?可以得,我这里提供主要的Office文件类型(Office 2007或者更高版本的Word,Excel,PowerPoint文档)的在线查阅功能,follow me。
为了更加好的显示效果,更方便的开发,我这里利用微软Office官方网站提供的联机查看Office文档功能,网址是 ,如果你的office文档有个可以通过http 或者Https 访问的url,就可以利用的官方的这个功能,这个就是Office Online的部分功能吧。支持的浏览器包括 Internet Explorer 7 或更高版本、Safari 4 或更高版本、Firefox 3.5 或更高版本以及 Chrome。 支持的 Office Online 手机查看器包括 iPhone? 上的 Safari 以及 Windows Phone 上的 Internet Explorer。 官方的支持,无需插件,无需自己电脑安装Office软件,可以联机查看,下载,查找,打印,以PDF形式下载等功能,我估摸着,以后功能会更加强大,就选它,我看行。
由于需要一个可以公开访问的文档URL,所以我这里建立了一个辅助的网站,这个网站我部署在Microsoft Azure上面,网站的首页地址是 ,主要用到的一个文件是 GetAnnotationDocument.ashx ,主要代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Web;using LuoYong.CRMOperation;{ ////// Summary description for GetAnnotationDocument /// public class GetAnnotationDocument : IHttpHandler { public void ProcessRequest(HttpContext context) { try { string AnnotationId = context.Request.QueryString["AnnotationId"]; CRMAnnotationMgr annotationMgr = new CRMAnnotationMgr(); if (!string.IsNullOrEmpty(AnnotationId)) { var annotation = annotationMgr.GetAnnatationAttachementBody(new Guid(AnnotationId)); context.Response.ContentType = annotation.MimeType; byte[] mybyte = Convert.FromBase64String(annotation.DocumentBody); context.Response.BinaryWrite(mybyte); context.Response.Flush(); context.Response.End(); } else { throw new Exception("AnnotationId没有提供!"); } } catch (Exception ex) { context.Response.ContentType = "text/plain"; context.Response.Write("Error." + ex.Message); } } public bool IsReusable { get { return false; } } }}
然后还是稍微修改前面文章的 HTML Web资源后如下,代码优化了一下,点击链接的反映速度会些了,因为不一定都去查询附件的内容了:
微软MVP罗勇测试注释
序号 | 注释标题 | 注释内容 | 创建人 | 创建时间 | 修改人 | 修改时间 | 是否包含附件 | 附件名称 | 附件大小(KB) |
---|
附件内容预览 关闭
我上传了几个Office文件,如下:
测试点击Office文档的话会在新窗口中打开文档,当然是利用Office Online功能:
1. Word文档, .docx 文档:
2. Excel文档,.xlsx 文档:
3.PPT文档,.pptx文档:可以看到还可以放映幻灯片呢,给力!
4.pdf文档则会直接在浏览器中打开,如果你安装了PDF阅读软件也允许直接在浏览器中打开的话: