.NET实现对服务器端目录下PDF文件的预览

问题描述:

  现有服务器端目录下的PDF文件,数据库中存放的是此文件的文件名、大小、描述等信息。要实现的功能是:客户端能对此文件进行查看预览。

分析实现图示:

  

实现过程:

    分析:由于pdf文件格式不能直接被一般的浏览器直接预览,如果要实现在线预览,需要插件的支持,而大多数插件是需要客户端安装后才能支持在线预览的。这中方式对于客户来说相对繁琐且,也不是我想要的结果。如果要实现在线预览,而且不需要插件的支持,PDF就能直接在浏览器上查看,经过多方查询,决定先把PDF文件转成浏览器普遍支持的Flash格式(.swf),以此间接实现PDF文件的在线预览,再者为了Flash文件的显示美观,需要一个文档的组件FlexPaper来包裹。

 

过程实现:

  参照博文:http://www.cnblogs.com/qinpeifeng107/archive/2011/08/29/2158879.html。

 

以下是我对此的几点补充:

  1.上博文中的前端HTML中,如果你需要其他界面传入转入文件名称到此显示界面?

    我的方法是:url = “地址(显示文件界面)?变量=”+“值”,

    显示界面接收值并交给文档的组件方法:

    

    <script>
      String.prototype.getQuery = function (name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
      var r = this.substr(this.indexOf("\?") + 1).match(reg);
      if (r != null) return unescape(r[2]);
      return null;
      }

      var 接收变量= window.location.toString().getQuery('传入变量'); //获取swfName的值

 

    </script>

    再者:把接收变量交给文档的组件(即:将博文HTML中SwfFile: escape(“”)括号里,改为接收变量)。

  2.在博文的“3. Asp.net 调用pdf2swf.exe把PDF转换为SWF的用法” ,我在进入方法后新增了两个判断,判断要转换的文件是否存在,和转换后的文件是否有重名文件。如有需要可参阅:

  private static bool ConvertCmd(string fileName)
  {
    bool isSuccess = false;
    string cmdStr = "SWFTools\\pdf2swf.exe";
    //string savePath = HttpContext.Current.Server.MapPath("~/TestSWF/");
    // @"""" 相当于一个双引号,之所以要加@"""" 就是为了防止要转换的过程中,文件夹名字带有空格,导致失败
    string sourcePath =GetPath("fileinfo\\")+fileName+".pdf";
    string targetPath =GetPath("pages\\annexView\\annexViewUnit\\showPDF\\")+fileName+".swf";
    //如果PDF不存在
    if (!File.Exists(sourcePath))
    {
      return false;
    }

    #region 清理之前的记录
    if (File.Exists(targetPath))
    {
      //已经存在,删除
      File.Delete(targetPath);
    }
    using (Process p = new Process())
    {
      string argsStr = " -t " + sourcePath + " -s flashversion=9 -o " + targetPath;
      //调用新进程 进行转换
      ProcessStartInfo psi = new ProcessStartInfo(GetPath(cmdStr), argsStr);
      p.StartInfo = psi;
      p.Start();
      p.WaitForExit();
    }
    #endregion

  }

转载于:https://www.cnblogs.com/stray-dog/p/4308426.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值