silverlight仿“百度文库”的文档控件

通用的FlashPaper支持Word/Excel/PDF,到时对于Silverlight的XPS的文档支持问题比较多,本控件提供了一个可视化的XPS文档展示,提供放大缩小/打印/搜索/分页等功能,主要整合了开源的Document Toolkit。

10年积累的网站建设、网站设计经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有汾西免费网站建设让你可以放心的选择与我们合作。

1. 使用Document Toolkit,DocumentDataSource提供数据源,PageNvaigator提供分页 :

   
 
 
 
  1.  
  2.  
  3.           
  4.  
  5.         
  6.                     PageCount="{Binding PageCount, ElementName=viewer}" 
  7.                     PageIndex="{Binding PageIndex, ElementName=viewer, Mode=TwoWay}" 
  8.                     />  
  9.                   
  10.          

2. WebPackageReader读取本地xps或远程xps文件作为数据源

DotNetZipPackageReader 根据分页延迟加载文档

   
 
 
 
  1. // loads the sample XPS document from the web  
  2.             var url = string.Format("/DocumentService.ashx?id={0}", HtmlPage.Document.GetElementById("documentId").GetProperty("value"));  
  3.             webClient.OpenReadAsync(new Uri(HtmlPage.Document.DocumentUri, url));   
  4.             var reader = new WebPackageReader(new Uri(HtmlPage.Document.DocumentUri, url + "&part="));  
  5.             this.dataSource.PackageReader = reader;  
  6.             var xpsClient = new XpsClient();  
  7.             xpsClient.LoadXpsDocumentAsync(reader); 

3. 服务端根据请求的文件ID和当前页码返回指定的文件流

   
 
 
 
  1. private void Response(HttpContext context, string xpsFileName, string partName)  
  2.         {  
  3.             using (FileStream stream = File.OpenRead(xpsFileName))  
  4.             {  
  5.                 ZipFile file = new ZipFile(stream);  
  6.                 ZipEntry entry = file.GetEntry(partName);  
  7.                 if (entry != null)  
  8.                 {  
  9.                     using (Stream entryStream = file.GetInputStream(entry))  
  10.                     {  
  11.                         // TODO: set mime-type as defined in XPS package  
  12.                         context.Response.ContentType = "application/octet-stream";  
  13.                         byte[] buffer = new byte[2 << 14];    // write blocks of 32768 bytes  
  14.                         int read;  
  15.                         while ((read = entryStream.Read(buffer, 0, buffer.Length)) > 0)  
  16.                         {  
  17.                             context.Response.OutputStream.Write(buffer, 0, read);  
  18.                         }  
  19.                     }  
  20.                 }  
  21.                 else 
  22.                 {  
  23.                     // return 404 Not Found  
  24.                     context.Response.StatusCode = (int)HttpStatusCode.NotFound;  
  25.                 }  
  26.             }  
  27.  
  28.         } 

4. 源代码下载

点击

5. 在线预览

http://rapidsl2.guozili.25u.com/  (admin/admin  点左边菜单 控件展示 - 文档查看器)

6. 截图

分享名称:silverlight仿“百度文库”的文档控件
标题链接:http://www.gawzjz.com/qtweb/news45/192095.html

成都网站建设公司_创新互联,为您提供网站策划微信公众号网站制作App设计云服务器定制开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联