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并显示的功能,效果图如下:

时间: 2024-12-21 11:17:55

asp.net 实现pdf、swf等文档的浏览的相关文章

允许嵌入到PDF,Word文档和其他文件的条形码控件UPC/EAN Barcode Font Advantage Package

IDAutomation的UPC/EAN Barcode Font Advantage Package是一个先进的字体产品,它所用的工具,宏和源代码可以使用一个单一的字体文件来创建UCC-12, UPCA, UPCE, EAN8, EAN13, JAN, ISBN 和Bookland条形码.该字体满足ANSI, ISO和IEC 2000规格说明要求(ISO 15420:2000). 具体功能: 为了创建合适的UPC和EAN条形码类型,打印的字符必须要从UPC/EAN条形码字体数据表上定义的表格上

常用控件产品官方文档/手册/API列表 c#控件文档API列表 asp.net控件产品技术文档中文版

.netCHARTING报表图表控件 文档帮助手册Ab3d.PowerToys 文档帮助手册Ab3d.Reader3ds 文档帮助手册ABViewer 文档帮助手册 (工程图纸文档管理系统)Active DJ Studio 文档帮助手册Active Sound Editor 文档帮助手册Active Sound Recorder 文档帮助手册ActivePatch 文档帮助手册 (程序自动升级控件)Animated Chart 文档帮助手册BB FlashBack 文档帮助手册BB FlashB

solr从pdf、office文档中建立索引

使用solr从pdf.office文档中建立索引和从数据库中建立相似,只不过这里需要tika来解析这些文档.8.1 配置一个handler 这个handler首先要在solrConfig.xml中配置,如下所示:          <requestHandler name="/dataimport"    class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst    na

PDF格式的文档如何编辑修改

现在无论是下载一些文档资料还是公司直接传递文档很多都会用到PDF这种格式文件,这是一种便携式文档格式,传输查看都都不错,但是这种格式的文档在编辑操作上就没有那么方便了,那PDF文件怎么编辑修改呢? PDF文档有些是受加密保护或设置了编辑限制的,这类文档在打开时需要先去掉限制,或是输入文档密码打开,然后才可以对文档正常编辑. 首先用PDF编辑器打开PDF文件,文档打开后,左边是切换页面的缩略图窗口,右侧窗格则是用来编辑页面内容的编辑区域.在编辑区里可以通过右下角工具调整当前页面的视图大小,或者是按

Python处理PDF和Word文档常用的方法

Python处理PDF和Word文档的模块是PyPDF2,使用之前需要先导入. 打开一个PDF文档的操作顺序是:用open()函数打开文件并用一个变量来接收,然后把变量给传递给PdfFileReader对象,形成一个PdfFileReader对象,这样用PdfFileReader对象下面的各种方法.属性去操作PDF文档. PdfFileReader对象常用方法: (1).PyPDF2.PdfFileReader()方法:代表一个PdfFileReader对象. (2).getPage() 方法:

PDF如何在文档里压缩?

PDF如何在文档里压缩?经常要用到PDF文件,经常要对PDF文件操作,PDF压缩,合并,转换都是可以的,PDF文件可以压缩的,这里介绍下方法. 1.在手机应用市场找到迅捷PDF阅读器,下载好了在桌面双击打开. 2.选择小功能,然后选择PDF压缩. 3.选择一个PDF文件,然后点击压缩. 4.转换需要点时间,转换好可以查看文档. 5.转换位置就是这样,然后去查看就可以了. 第二种方法. 1.在浏览器当中搜索迅捷PDF在线转换器,然后点击PDF压缩. 2.添加好文件,熟悉下工具,然后点击确认转换就好

Java模拟实现百度文档在线浏览

Java模拟实现百度文档在线浏览 这个思路是我参考网上而来,代码是我实现. 采用Apache下面的OpenOffice将资源文件转化为pdf文件,然后将pdf文件转化为swf文件,用FlexPaper浏览. ok, A.下载OpenOffice (转换资源文件) B.下载JodConverter(调用OpenOffice) C.下载Swftools(Pdf2Swf) D.下载 FlexPaper(浏览swf文件) 这里我已经全部下载好了,大家只需要下载:http://down.51cto.com

FlexPaper实现文档在线浏览(附源码)

园子里也有关于FlexPaper的文章,但都不怎么详细. 没有较全的参数说明.就连官方网站都没有.没法,最后只得将swf文件反编译后查看了源码才将里面的参数全部弄出来. 好了,废话不多说,开始正题. 1. 概述 FlexPaper是一个开源轻量级的在浏览器上显示各种文档的组件,被设计用来与PDF2SWF一起使用, 使在浏览器中显示PDF成为可能,而这个过程并无需PDF软件环境的支持. 另外也可以通过将一些例如Word.PPT等文档转成PDF,然后实现在线浏览. 2. 实现步骤 文档(PDF,Wo

sharepoint 2013 office web app 2013 文档在线浏览 IE11 浏览器不兼容解决方法

昨晚配置完成office web apps 2013的外部网络访问之后,今天发现了一个很奇怪的问题,就是IE 11不支持文档在线浏览,找了很多方法,打补丁什么的,都不管用,最后在预览文件的页面,看到<head>标签,里面有一句代码: <meta http-equiv="X-UA-Compatible" content="IE=99" /> 我把他改成了 <meta http-equiv="X-UA-Compatible&quo