C# 在线PDF阅读

来源:互联网 发布:淘宝店铺转让合同 编辑:程序博客网 时间:2024/04/19 18:41

今天写一下PDF在线阅读的两种方法:

1.  直接用Object读取PDF文件(如果机器上客户端都安装了PDF的话)

aspx代码:

      <object id=”pdfObject” width=”80%” height=”80%” classid=” CLSID:CA8A9780-280D-11CF-A24D-444553540000”>

            <param name=”SRC” value=”DinnerNow.pdf”>

      </object>

其中如果需要从后台读取这个value值(DinnerNow.pdf)在下面一并描述。

2.  将上传的PDF文件转换为swf格式之后,用flash阅读,这样的话就分两步,第一步的话就是在上传文件的时候将PDF转化为swf格式,处理方法如下:

a) 在服务器机器上安装swftools-0.9.1.exe(或者FlashPaper之类的软件),在这边我用swftools(如我的文件安装在C://Program Files//SWFTools)。

b) 客户端上传文件(如用FileUpload上传文件之后,如SaveAs方法之后),调用服务器端CMD,代码如下:

              Process p = new Process();

            p.StartInfo.FileName = "cmd.exe";

            p.StartInfo.UseShellExecute = false;

            p.StartInfo.RedirectStandardInput = true;

            p.StartInfo.RedirectStandardOutput = true;

            p.StartInfo.RedirectStandardError = true;

            p.StartInfo.CreateNoWindow = true;

            p.Start();

            p.StandardInput.WriteLine("cd C://Program Files//SWFTools");

            // d://DinnerNow.pdf是服务器中保存文件的地址(上传文件到服务器的哪个位置)

            // d:// DinnerNow.swf是需要将pdf文件转化为swf文件之后的路径

            p.StandardInput.WriteLine("pdf2swf.exe d://DinnerNow.pdf -o d:// DinnerNow.swf -T 9");

            p.StandardInput.WriteLine("exit");

            p.WaitForExit();

        p.Close();

 c) 之前两步做的都是准备工作,就是将pdf文件转换为swf,接下来就是在线阅读了,在线阅读跟第一种方法中一样,也用object来处理,aspx代码如下:

     <div>
        <script type="text/JavaScript">
            document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="50%" height="50%" codebase="http://active.macromedia.com/flash5/cabs/swflash.cab#version=8,0,0,0">');
            document.write('<param name="MOVIE" value=' + src + '>');
        </script>
    </div>

     那么其中的src怎么得到呢,可以在aspx.cs后台传到前台去,如重写一个OnPreRender方法:

          protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);
            Page.ClientScript.RegisterClientScriptBlock(GetType(), "swfSrc", "<script type=/"text/javascript/">var src = 'DinnerNow.swf';</script>");
        }

     上面两步建议用自定义控件去封装下。

     今天罪恶感很重,有点晚了,不能将jQuery的事件处理这一块写出来,呜呜呜~~~~

原创粉丝点击