很久之前Insus.NET在实现了《FlexPaper实现文档在线浏览》http://www.cnblogs.com/insus/archive/2011/07/21/2112369.html。 当时也只是实现了显示而已,也没有实现在线转换功能。
现在,Insus.NET已经从asp.net转向了asp.net MVC应用程序开发了。因此再想以MVC应用程序来实现文档库的功能。由于新版本的FlexPaper无法屏蔽打印的功能,因此还是用回来原来的FlexPaper组件,也意味使用前一篇的一些类库与文件。不过下载下来之后,不能直接使用,需要修改一些路径与参数。

在MVC应用程序中,不能跟asp.net一样,使用Literal控件来传递参数了,需要考虑到传递参数给js类,为了不直接传递真正的文件名给js,还得需要做另外处理。这样做是为了让用户看到指向地址,使用地址来下载文档 。

OK,开始吧,不过还得准备准备。

不管是用户上传的PDF文件是存储在数据库中,还是应用程序中的某一个文件夹中,我们是先得到找到它的 ID,此ID既可以是整数,也可以是字符串,只是是唯唯一性即可。

从前一篇下载到的源程序,把它放在MVC应用程序中,如:

为了屏蔽打印功能,请建议使用上图中高亮这个文件。如果你不想屏蔽的话,建议直接是官网下载最新版本。另外InsusDocumentVieewer.swf这个外框显示格式文件,也移至js这个目录中来,方便软件维护与管理,区别于前一篇是放在swf目录下。还要打开它,修改一下里面的参数路径:

另外,pdf2swf.exe文件,放在Bin目录之下:

这个pdf2swf.exe你可以使用最新版本的。旧的肯定没有问题。它是从SWFTools网站下载。下载之下,它是无法在windows 8和windows 2008 R2的64位下安装。但你可以在一台客户端xp或是windows7下安装,然去安装目录,把pdf2swf.exe拷贝出来。

还有一个要准备的,是在MVC应用程序下,创建一个Temp目录。此目录是存储临时转换的swf文件,或是你的pdf是二进制数据流的,生成pdf时,也是在此temp临时目录进行。

准备好了,此次演示,Insus.NET是以PDF文件存储在某一个文件夹,但它的一些基本信息是存在数据库表中。
先创建一个model:

这个model有两个属性,一个是ID,一个是swfFile。前者是用户在地址栏看到的ID,根据这个ID可以在表中找到PDF的路径或是存储在数据库的二进制流数据。后者是将是转换为swf文格格式的文件名。

在Entities目录下,创建一个实体:

此实体,即是把PDF文件或是二进制数据库转换为swf文档格式的功能。

上图中#14和#15行代码,你看得懂。
#16行是一空行,如果你的pdf文件是二进制数据流的话,就应该先在这里把二进制数据流转为pdf文档,存进Temp目录中。不懂怎样转,可以参考这篇《数据流创建文件》http://www.cnblogs.com/insus/archive/2011/04/11/2012733.html

#17行,是随机产生一个文件名,没有后缀。
此次演示中,Insus.NET已经把一个pdf文档拷贝至temp目录中,如果你的pdf文档是入在另一个目录的,你是指向它。
#18和#19行是,是找到pdf文档与swf文件(此时还没有真正产生)
#21至#36是转换swf文档。更多参数设置,可以参考官网帮助。

#38至#40是获得转换后的swf文件名,添加至List中去。将来MVC的控制器用到它。

接下来在Controllers下的HomeController创建一个ActionResult和一个JsonResult方法。

在Views\Home目录下,创建一个视图,视图名称,即是在控制器中的ActionResult方法名:

下面是这个视图代码:

#1部分是样式代码,在前一篇中,它是一个样式文件,现在直接搬至视图中来。
#2部分,是引用jQuery库,注意到否,可以用到最新版本的jQuery库。
#3部分,是引用相关的js库。
#5部分,是完全照搬旧的,没有丝毫改变。
#4部分:

在Success方法,有两个地方,是把javascript加入head中去。先要把swf文件赋值给swfFile变量中,第二是把InsusDocumentView.js类库加入至head中。

完成了。看看运行时的效果:

MVC应用程序实现文件库(FlexPaper)相关推荐

  1. MVC应用程序播放RealPlayer(rmvb)视频

    以前Insus.NET开发asp.net时,一直无法把Realplayer的rmvb格式的视频在aspx网页播放与显示.现在学习ASP.NET MVC了,再次尝试这个,望它能在MVC的应用程序运行. ...

  2. ASP.NET MVC应用程序展示RDLC报表

    ASP.NET MVC应用程序展示RDLC报表 原文:ASP.NET MVC应用程序展示RDLC报表 学习ASP.NET MVC这样久,在学习,练习与应用过程中,觉得很多知识与以前的ASP.NET多有 ...

  3. MVC应用程序实现上传文件(续)

    前几天,有练习了<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html 那只是把文档上传至MVC应用程序下的某一目录之中. 其 ...

  4. ASP.NET MVC应用程序实现下载功能

    上次Insus.NET有在MVC应用程序实现了上传文件的功能<MVC应用程序显示上传的图片> http://www.cnblogs.com/insus/p/3597543.html  有上 ...

  5. 使用mvc模式读取服务器上的文件,关于C#:如何使用asp.net MVC应用程序从服务器上的网络路径读取...

    我已经在运行.net MVC应用程序的Web服务器上设置了到另一台用于存储上载文件的服务器的网络路径.为了允许通过应用程序将文件上传到网络路径,我修改了IIS中的应用程序池,以便该应用程序有权上传到它 ...

  6. 超级简单:一步一步教你创建一小型的asp.net mvc 应用程序

    超级简单:一步一步教你创建一小型的asp.net mvc 应用程序 这本教程中将帮助你创建一个小型的asp.net mvc示例. 在本教程中,我们将创建自己的 Model , View 和Contro ...

  7. ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)

    概述 安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问题.本篇主要包括以下几个内容 : 认证 授权 XSS跨站脚本攻击 ...

  8. [导入]ASP.NET MVC框架开发系列课程(2):一个简单的ASP.NET MVC应用程序.zip(13.70 MB)...

    讲座内容: 使用ASP.NET MVC框架进行开发与ASP.NET WebForms截然不同.本次课程将通过官方的示例程序简单了解一下ASP.NET MVC应用程序的结构与特点. 课程讲师: 赵劼 M ...

  9. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

    1 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Microsoft Graph 服务针对一些主流的 ...

最新文章

  1. 76项!海南省崖州湾种子实验室揭榜挂帅项目立项结果公示
  2. 资源管理器方法访问FTP服务
  3. 如何从代码层面优化系统性能
  4. 【JVM调优工具篇】使用MAT工具分析dump文件(查看GC Roots)
  5. bootstraptable 分页循环_关于bootstrap-table服务端分页问题
  6. 第六章连接和分组查询
  7. 使用JShell的Java 9 Streams API
  8. 对SqlServer2008中的日志进行截断的方法
  9. TensorFlow3-会话
  10. typora markdown 标题自动编号
  11. PowerEdge r730xd 安装centos 6.7
  12. 09年网络工程师考试大纲
  13. initramfs文件解压方法
  14. ajax上传图片的方法,ajax上传图片的方法
  15. 算法复杂度-渐进分析 (Asymptotic Analysis)
  16. windows 2008 server R2 服务器docker安装
  17. 根据经纬度查询两点距离(sql)
  18. OI-wiki 算法基础 模拟 NOIP2014 生活大爆炸版石头剪刀布 python
  19. wordpress友联_WordPress 友情链接页面终极版
  20. [控制原理基础]浅谈PID算法

热门文章

  1. javascript设计思维
  2. [转]C#委托的异步调用
  3. 解决Docker构建时出现的 WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: Permission denied
  4. windows xp https页面找不到_Windows 提权快速查找 Exp
  5. python leetcode_leetcode 刷题经验,主力 python
  6. mysql long类型_怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!...
  7. mybatis使用statement.getGenreatedKeys(); useGeneratedKeys=”true”;使用自增主键获取主键值策略和Oracle不支持自增,Oracle使用序列
  8. 怎么确保一个集合不能被修改
  9. Git rebase 和 Git merge 的区别,你知道吗?
  10. 哎!又要过年了,程序员最怕问到什么?