将pdf转为swf文件 - sky.chen

时间:2024-03-03 13:24:48

将pdf转为swf文件

前章中介绍了怎样将文档转成pdf档,本章继续介绍将pdf档转为swf文件。

实现在线阅读文件,用iframe直接能够加载pdf文件,可是在显示的时候,效果不是很好,而且客户端一定要有pdf阅读软件。网上常见的在线阅读实现方式是播放flash,即播放swf文件。

有两种方式进行转换:

01 flashpaper,这种方式能直接从office之类的文档转为swf文件。但是不支持64位系统,且服务器一定要安装这个软件。64位系统的话,可以用Print2Flash代替。示例代码:

 

 public static void ConvertToSwf(string strDocPath,string strSwfPath)
        {
            try
            {
                Process process = new Process();     //
                ProcessStartInfo startInfo = new ProcessStartInfo();
                string paperroot = @"C:\Program Files (x86)\Print2Flash3\p2fServer.exe";
                string docFile = strDocPath;
                string swfFile = strSwfPath;
                startInfo.FileName = paperroot;
                startInfo.Arguments = docFile + " " + swfFile;
                startInfo.UseShellExecute = false;
                startInfo.RedirectStandardInput = false;
                startInfo.RedirectStandardOutput = false;
                startInfo.CreateNoWindow = true;
                process.StartInfo = startInfo;
                process.Start();
                process.WaitForExit();
                process.Close();
            }
            catch (Exception ex)
            {
                
                throw ex;
            }

        }

由于这种方式要在服务器端安装软件,感觉比较麻烦,当时未选择。

02,pdf2swf.exe转换工具,只要下载,不需安装。相关代码

 public static void ConvertToSwf(string pdfPath, string swfPath)
        {
            try
            {
                string exe = HttpContext.Current.Server.MapPath("~/Temp/pdf2swf.exe");//获取转换工具的安装路径
                if (!File.Exists(exe))
                {
                    throw new ApplicationException("Can not find: " + exe);
                }
                StringBuilder sb = new StringBuilder();
                sb.Append(" -o \"" + swfPath + "\"");//output  
                sb.Append(" -z");
                sb.Append(" -s flashversion=9");//flash version  
                sb.Append(" -s disablelinks");//禁止PDF里面的链接  
                sb.Append(" -j 100");//Set quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85)  
                sb.Append(" \"" + pdfPath + "\"");//input  
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = exe;
                proc.StartInfo.Arguments = sb.ToString();
                proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                proc.Start();
                proc.WaitForExit();
                proc.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

  两种方式都可以实现,各有优劣,可以根据实际情况选择