• 必要条件
  • 演示 ASP.NET 用 FlexPaper 在页面上显示 PDF 文件
    • 软件环境
    • 解决方案结构
    • 简单显示 SWF 文件
    • 上传并显示 PDF 文件
  • 常见问题
  • 参考资料

其实,虽说是显示 PDF 文件,但只是将 PDF 文件转换成 SWF,再用 Adobe Flash 插件播放。

另外,如果是 Word 文档,那么客户可以先利用 Office 插件或其他三方工具将 Word 文档转换成 PDF,再上传,也可以利用 Office COM 组件编写代码,将客户上传的 Word 文档直接转换成 PDF 文件。网上有很多这样的资料。

必要条件


  • Flexpaper。用于在页面上显示 SWF。下载地址
  • Pdf2swf。用于将上传的 PDF 文件转换成 SWF 文件,以便在页面上显示。下载地址

演示 ASP.NET 用 FlexPaper 在页面上显示 PDF 文件


软件环境
  • VS 2010 framework 4.0
  • Windows 7 旗舰版
解决方案结构
  • FlexPaper.PDFViewer
  • SaveAsPDFandXPS.exe
  • swftools-2013-02-19
  • FlexPaper 目录。FlexPaper 必需。
  • SWFTools 目录。SWFTools 工具,将 PDF 转换成 SWF。
  • TestSWF 目录。上传目录,并且是 SWFTools 工具的输出目录。
  • SimpleViewer 页面。简单显示 SWF 文件。
  • PDFUploadViewer 页面。上传 PDF 到 Web 服务器,并显示 PDF 文件(转换成 SWF 的文件)。
  • Viewer 页面。上传后,显示指定文件的页面。
简单显示 SWF 文件
<%@ Page Language="C#" AutoEventWireup="true" %>
 
<!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="FlexPaper/js/jquery.js" type="text/javascript"></script>
    <script src="FlexPaper/js/flexpaper_flash.js" type="text/javascript"></script>
    <script runat="server">
        
        public string FileURL
        {
            get;
            set;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            FileURL = "Paper.swf";
        }
        
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div style="position: absolute; left: 20px; top: 20px;">
        <a id="viewerPlaceHolder" style="width: 600px; height: 500px; display: block;"></a>
        <input type="hidden" id="file" value='<%=FileURL %>' />
        <script type="text/javascript">
 
            var fileURL = $("#file").val();
            var fp = new FlexPaperViewer(
        'FlexPaper/FlexPaperViewer',
        'viewerPlaceHolder',
        { config: {
            SwfFile: escape('TestSWF/' + fileURL),
            Scale: 0.6,
            ZoomTransition: 'easeOut',
            ZoomTime: 0.5,
            ZoomInterval: 0.2,
            FitPageOnLoad: false,
            FitWidthOnLoad: false,
            PrintEnabled: true,
            FullScreenAsMaxWindow: false,
            ProgressiveLoading: false,
            MinZoomSize: 0.2,
            MaxZoomSize: 5,
            SearchMatchAll: false,
            InitViewMode: 'Portrait',
            ViewModeToolsVisible: true,
            ZoomToolsVisible: true,
            NavToolsVisible: true,
            CursorToolsVisible: true,
            SearchToolsVisible: true,
            localeChain: 'en_US'
        }
        }
        );
        </script>
    </div>
    </form>
</body>
</html>

Paper.swf 是官方给的文件,运行结果如下图所示:

上传并显示 PDF 文件

前台代码,如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PDFUploadViewer.aspx.cs"
    Inherits="FlexPaper.PDFViewer.PDFUploadViewer" %>
 
<!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>
</head>
<body>
    <form id="form1" runat="server">
    <div style="margin: 50px auto; border: #e3e3e3 1px solid; height: 300px; width: 350px;>
        background-color: #8ABAE3; padding: 20px 20px 20px 20px;"
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <br />
        <br />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <asp:Button ID="Btn_Upload" runat="server" Text="上传" OnClick="Btn_Upload_Click" />
        <br />
        <br />
        选择列表框中的文件,查看:
        <br />
        <asp:ListBox ID="ListBox1" runat="server" Height="205px" Width="290px"></asp:ListBox>
        <asp:Button ID="Btn_Viewer" runat="server" Text="查看" OnClick="Btn_Viewer_Click" />
        <br />
        <br />
    </div>
    </form>
</body>
</html>

后台代码,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
 
namespace FlexPaper.PDFViewer
{
    public partial class PDFUploadViewer : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
 
        }
        /// <summary>
        /// 上传 PDF,并转换成 SWF
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Upload_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                try
                {
                    string fileName = FileUpload1.FileName;
                    string fileExtention = FileUpload1.FileName.Substring(fileName.LastIndexOf(".") + 1);
                    string filePath = HttpContext.Current.Server.MapPath("~/TestSWF\\") + fileName;", "<script>alert('上传成功')</script>");~/SWFTools/pdf2swf.exe");~/TestSWF/");""" + savePath + fileName + @"""";""" + savePath + fileName.Substring(0, fileName.LastIndexOf(".")) + ".swf" + @"""";""" 四个双引号得到一个双引号,如果你所存放的文件所在文件夹名有空格的话,要在文件名的路径前后加上双引号,才能够成功  -t " + sourcePath + " -s flashversion=9 -o " + targetPath;.")) +.swf", fileName.Substring(0, fileName.LastIndexOf(".")) + ".swf"));cmd">命令</param>args">命令参数</param>\"", ""));
 
                    FileUpload1.SaveAs(filePath);
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "
                    //切记,使用pdf2swf.exe 打开的文件名之间不能有空格,否则会失败
                    string cmdStr = HttpContext.Current.Server.MapPath("
                    string savePath = HttpContext.Current.Server.MapPath("
                    string sourcePath = @"
                    string targetPath = @"
                    //@"
                    // -t 源文件的路径
                    // -s 参数化(也就是为pdf2swf.exe 执行添加一些窗外的参数(可省略))
                    string argsStr = "
 
 
                    ExcutedCmd(cmdStr, argsStr);
 
                    ListBox1.Items.Add(new ListItem(fileName.Substring(0, fileName.LastIndexOf("
                        "
                }
                catch
                {
 
                }
            }
        }
        /// <summary>
        /// 转换成 SWF 文件
        /// </summary>
        /// <param name="
        /// <param name="
        private static void ExcutedCmd(string cmd, string args)
        {
            using (Process p = new Process())
            {
                ProcessStartInfo psi = new ProcessStartInfo(cmd, args.Replace("
                p.StartInfo = psi;
                p.Start();
                p.WaitForExit();
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Viewer_Click(object sender, EventArgs e)
        {
            string url = "Viewer.aspx?id=" + HttpUtility.HtmlEncode(ListBox1.SelectedValue);
            string script = @" + url +
                      <script>window.open('"
                                   "','newwindow','height=600,width=700,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=yes,location=no, status=no');</script>";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "", script);
 
        }
    }
}

上传 PDF 文档,并在后台转换成 SWF 文件,以便在页面上显示

上传后显示

常见问题


  • 无法显示 Flexpaper

如果连 Flexpaper 都无法显示,并显示如下界面,说明你还没安装 Adobe Flash 插件。

  • 可以显示 Flexpaper,但无法显示 SWF 文件

如果官方的 Paper.swf 都不能加载成功,并显示,右上角的加载装载状态一直是等待状态,如下图:

这是由于 Flexpaper 还没获得 Adobe Flash 插件信任,点击 http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065 为 FlexPaper 添加信任。点击第三个 Tab 页“全局安全设置(Global Security Settings )”,如下图所示:

添加信任的 SWF 文件或其目录。此时就可以正常实现。

  • 官方的 SWF 可以显示,但不能加载显示其他或自己的

这可能是 .swf 文件的版本问题。可以运行 SWFTools 图形工具,尝试把 PDF 转换为 SWF,用程序加载显示,看看什么命令行参数好使。

参考资料


  • http://www.swftools.org/
  • http://flexpaper.devaldi.com/default.jsp

下载DEMO

ASP.NET 用 FlexPaper 在页面上显示 PDF 文件相关推荐

  1. mvc在页面上显示PDF

    /// <summary>/// 读取PDF文件/// </summary>/// <param name="fName">文件名称(可以从其他 ...

  2. jsp页面在线显示pdf文件

    实现功能 知识库系统中存在一个附件就是一个知识,当全文搜索到这个附件知识的时候需要能在线查看这个知识也就是附件里的文章内容.(如果不是pdf格式的文档,我们这边是先将不同格式的附件转成PDF格式) 实 ...

  3. IE11线上显示pdf文件以及pdf.js用法

    最近公司要求能够在ie上线上预览pdf插件 vue有vue-pdf插件可以用 但是js虽然有pdfjs等 但是新版本只支持谷歌浏览器(语法有箭头函数),所以在github找到了老版本的pdfjs,发现 ...

  4. 在html中加入pdf文件吗,如何在网页中显示PDF文件

    我们是不是对百度文库能直接在网页上显示PDF文件感到好奇,你是否也想实现这样的功能?很多朋友认为可以直接在网页中插入代码就可以实现这个功能,其实要在网页中完整地显示PDF文件,需要把PDF文件转换成S ...

  5. [html] 如何在页面上显示Emoji表情?

    [html] 如何在页面上显示Emoji表情? 如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码. ...

  6. python网页提交表单_Html表单——使用python在web页面上显示用户提交的数据

    这个例子展示了如何使用Python完成同样的事情--在web页面上显示提交的数据. 环境配置: win10.Anaconda3 问题: 1.在安装Anaconda3的时候出现了很多问题,经建议安装旧版 ...

  7. php怎么显示gif图片,如何让伪进度条在页面上显示成gif图像

    在工作中为了方便,我们需要加上一些效果,这篇文章就和大家讲讲伪进度条如何在页面上显示gif图像,感兴趣的朋友可以参考一下,希望可以帮助到你. 最近做的一个项目中,点击某个操作后,由于后台做的事情比较多 ...

  8. jsp 图片上传到oracle,jsp上传图片到数据库(oracle),并能在页面上显示解决办法

    jsp上传图片到数据库(oracle),并能在页面上显示解决办法 jsp上传图片到数据库(oracle),并能在页面上显示解决办法 日期:2014-05-18 浏览次数:20341 次 jsp上传图片 ...

  9. 杜威分类法的分类规则_如何在父分类法的存档页面上显示子分类法

    杜威分类法的分类规则 In the past we have shown you how to display subcategories on category pages in WordPress ...

最新文章

  1. 惠普鼠标g260_惠普g260鼠标怎么样 惠普鼠标怎么样?
  2. Pandas初学者代码优化指南
  3. 信息保护:从经典纠错到量子面膜
  4. 【年度技术观点合集】计算机视觉,自然语言,机器学习…看看顶级科学家们怎么说
  5. 应该允许公司报复黑客吗?
  6. Java多线程之CyclicBarrier用法
  7. python yield 简单用法_python中 yield 的用法 (简单、清晰)
  8. 华为云数据库TaurusDB性能挑战赛,50万奖金等你来拿!
  9. 敏捷个人新体系学习 - 1.实践的艺术
  10. Microsoft AJAX Library对 String的扩展
  11. win、linux下tomcat内存的修改
  12. C语言软盘,如何使用编程的方法--创建1.44兆软盘镜像的几种方法。。。(之一 C语言法)...
  13. 使用说明 思迅收银系统_浅析思迅软件收银系统常见的功能主要有哪些?
  14. PIL图像处理-二值化
  15. JVM MAT使用分析详解
  16. mysql rank函数怎么用_mysql rank函数怎么用
  17. 恒流LED驱动芯片 SM15133EK SM15133EH 明微电子
  18. 数据类型和存储上的差别,基本数据类型,引用数据类型
  19. 格局,注定了你的层次和结局!
  20. 是什么让数据分析软件SAS风靡全球

热门文章

  1. CSS参考手册_web前端开发参考手册系列
  2. 中国移动利润大幅上涨后,降低5G套餐,却悄悄提高固网宽带价格
  3. 清除redis的key与数据
  4. str与__str__、repr与__repr__的关系
  5. matlab光流lk,Matlab数字视频处理 光流LK算法
  6. Linux Wifi共享上网脚本,类似win 7的Connectify工具
  7. 效率源希捷自校准配套专修软件 免费
  8. 二十行Python代码,带你了解扣扣发生大规模账号泄露前因后果
  9. mysql存emoji_如何在MySQL中存储emoji?
  10. css3动画动一次就停止,css - 在最后一帧停止CSS3动画