asp.net 实现pdf、swf等文档的浏览
一、pdf的浏览
可以借助于pdf.js插件完成,使用pdf.js的好处是不需要安装额外的插件(比如flash),是纯web的解决方案。插件的下载链接:http://mozilla.github.io/pdf.js/。
通过pdf.js里面的示例代码可以看出,实际上浏览pdf文档是通过viewer.html实现的。在链接后面通过传入file参数,实现不同文档的浏览。比如如下的链接:
<a href="#" onclick="show('../../Js/pdf.js/web/viewer.html?file=/damis/PDFFiles/{SFZH}.pdf')">pdf</a>
其中show方法是我定义的一个js方法,用于弹出窗口,定义如下:
<script type="text/javascript">
function show(openUrl) {
var iWidth = 820; //弹出窗口的宽度;
var iHeight = 680; //弹出窗口的高度;
var iTop = (window.screen.availHeight - 30 - iHeight) / 2; //获得窗口的垂直位置;
var iLeft = (window.screen.availWidth - 10 - iWidth) / 2; //获得窗口的水平位置;
window.open(openUrl, "", "height=" + iHeight + ", width=" + iWidth + ", top=" + iTop + ", left=" + iLeft + ",toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no,alwaysRaised=yes,depended=yes");
}
</script>
{SFZH}是EXT.NET里面传入参数的方式,不是重点。
效果图:

二、swf的浏览
有时候为了追求更好的浏览体验,可能需要借助于flash。有现成的flexpaper可以使用。
flexpaper只接收swf文件,所有在使用之前必须准备好swf文件。由于我们如上已经通过itextsharp生成了pdf文档,所以只需要将pdf转换为swf即可。这个功能我们可以使用pdf2swf.exe来完成,可以去http://www.swftools.org/下载。
实现pdf到swf的转换代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!X.IsAjaxRequest)
{
string sfzh = Request.QueryString["sfzh"] as string;
string exe = Server.MapPath("~/Base/pdf2swf.exe");
string source = CommonUtil.GetLocalPathByIdentitycard(sfzh) + sfzh + ".pdf";
string dest = Path.Combine(Server.MapPath("~"), "Swf\\" + sfzh + ".swf"); if (!File.Exists(dest))
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = exe;
process.StartInfo.Arguments = source + " -o " + dest + " -T 9 -f";
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.Start();
process.WaitForExit();
process.Close();
} string swfFile = "../../Swf/" + sfzh + ".swf";
this.Literal1.Text = "var swfFile = '" + swfFile + " '";
}
}
这里是通过Process进程实现转换。
前台代码:
<a href="#" onclick="show('DASwfView.aspx?sfzh={SFZH}')">swf</a>
show方法跟如上pdf弹出文档的js方法是一样的。
弹出的DASwfView.aspx页面中的html代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DASwfView.aspx.cs" Inherits="DAMIS.Web.Web.DAQueryStatistics.DASwfView" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="../../Js/swfobject/swfobject.js" type="text/javascript"></script>
<script src="../../Js/flexpaper_flash_debug.js" type="text/javascript"></script>
<script src="../../Js/jquery-1.4.2.js" type="text/javascript"></script>
<script type="text/javascript">
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</script>
<script src="../../Js/DocumentView.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div style="position: absolute; left: 3px; top: 3px;" align="center">
<div id="flashContent">
<p>
To view this page ensure that Adobe Flash Player version 10.0.0 or greater is installed.
</p>
<script type="text/javascript">
var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='" + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>");
</script>
</div>
</div>
</form>
</body>
</html>
如上需要引用的几个js文件可以下载到。DocumentView.js这个文件中有一段代码需要注意:
swfobject.embedSWF(
"../../Swf/DocumentViewer.swf", "flashContent",
"800", "675", "10.0.0", "playerProductInstall.swf",
flashvars, params, attributes);
这里的DocumentViewer.swf文件借用了Insus的InsusDocumentViewer.swf文件(改了个名)。而这部分实现也是参考了Insus的解决方案,具体的可以参考:http://www.cnblogs.com/insus/p/3574298.html这篇博文。
如下的代码就实现在线将pdf转换为swf并显示的功能,效果图如下:

asp.net 实现pdf、swf等文档的浏览的更多相关文章
- 常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版
.netCHARTING报表图表控件 文档帮助手册Ab3d.PowerToys 文档帮助手册Ab3d.Reader3ds 文档帮助手册ABViewer 文档帮助手册 (工程图纸文档管理系统)Activ ...
- 关于ASP.NET Web Api的HelpPage文档注释问题
关于ASP.NET Web Api的HelpPage文档注释问题 以前我用微软的HelpPage来自动生成的webAPI帮助文档.在使用了一段时间后发现只能显示Controller上面写的注释文档内容 ...
- 判断pdf、word文档、图片等文件类型(格式)、大小的简便方法
判断pdf.word文档.图片等文件类型(格式).大小的简便方法 很久没发文了,今天有时间就写一下吧. 关于上传文件,通常我们都需要对其进行判断,限制上传的类型,如果是上传图片,我们甚至会把图片转化成 ...
- java通过url在线预览Word、excel、ppt、pdf、txt文档
java通过url在线预览Word.excel.ppt.pdf.txt文档中的内容[只获得其中的文字] 在页面上显示各种文档中的内容.在servlet中的逻辑 word: BufferedInputS ...
- Python处理PDF和Word文档常用的方法
Python处理PDF和Word文档的模块是PyPDF2,使用之前需要先导入. 打开一个PDF文档的操作顺序是:用open()函数打开文件并用一个变量来接收,然后把变量给传递给PdfFileReade ...
- 使用Lucene对doc、docx、pdf、txt文档进行全文检索功能的实现
转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76273859 本文出自[我是干勾鱼的博客] 这里讲一下使用Lucene对doc. ...
- FlexPaper实现文档在线浏览(附源码)
园子里也有关于FlexPaper的文章,但都不怎么详细. 没有较全的参数说明.就连官方网站都没有.没法,最后只得将swf文件反编译后查看了源码才将里面的参数全部弄出来. 好了,废话不多说,开始正题. ...
- Java模拟实现百度文档在线浏览
Java模拟实现百度文档在线浏览 这个思路是我参考网上而来,代码是我实现. 采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper ...
- sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法
昨晚配置完成office web apps 2013的外部网络访问之后,今天发现了一个很奇怪的问题,就是IE 11不支持文档在线浏览,找了很多方法,打补丁什么的,都不管用,最后在预览文件的页面,看到& ...
随机推荐
- UNIX环境编程学习笔记(11)——文件I/O之文件时间以及 utime 函数
lienhua342014-09-16 1 文件的时间 每个文件都有三个时间字段,如表 1 所示. 表 1: 文件的三个时间字段 说明 字段 st_atime 文件数据的最后访问时间 st_mtime ...
- 【ES】简单使用
import sys reload(sys) sys.setdefaultencoding('utf-8') from datetime import datetime from elasticsea ...
- Android开发学习笔记-自定义组合控件的过程
自定义组合控件的过程 1.自定义一个View 一般来说,继承相对布局,或者线性布局 ViewGroup:2.实现父类的构造方法.一般来说,需要在构造方法里初始化自定义的布局文件:3.根据一些需要或者需 ...
- Mapper method 'com.autoyol.mapper.trans.AccountLogMapper.getTotalIncomByMemNoLastest attempted to return null from a method with a primitive return type (int).解决方法
1.打开日志输出,降低日志级别. <AppenderRef ref="console" level="trace"></AppenderRef ...
- 关于测试中哪些信息需要放到jira上面
1.每个新需求的功能点,全部在jira上一一呈现 2.每个bug也一样在jira上一一呈现 3.任务一个需要优化改进的点也一一在jira上呈现 然后程序员一直开发新功能和修改新bug,测试人员负责bu ...
- nginx 配置虚拟主机的三种方法
nginx,一个server标签就是一个虚拟主机. 1.基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2.基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的管 ...
- pyqt与拉勾网爬虫的结合
人力部需要做互联网金融行业的从业人员薪酬分析,起初说的是写脚本,然后他们自己改.但这样不太好,让人事部来修改py脚本不太好,这需要安装py环境和一些第三方包,万一脚本改来改去弄错了,就运行不起来了. ...
- PHP+Oracle Instant Client
<?php <b>●Oracleとの接続テスト</b> <hr> <?php // Oracleとの接続 $conn = OCILogon(" ...
- 8 -- 深入使用Spring -- 1...3 容器后处理器
8.1.3 容器后处理器(BeanFactoryPostProcessor) 容器后处理器负责处理容器本身. 容器后处理器必须实现BeanFacotryPostProcessor接口.实现该接口必须实 ...
- Go并发编程(四)
并发基础 多进程 多线程 基于回调的非阻塞/异步IO 协程 协程 与传统的系统级线程和进程相比,协程的最大优势在于其“轻量级”,可以轻松创建上百万个而不会导致系统资源衰竭, ...