zoukankan      html  css  js  c++  java
  • flexpaper在线预览office文件,通过iis浏览没问题

    项目快结项了,就差最后一个在线预览功能了。研究了两天。不通过office组件就可以把office文件转换pdf,废话不说,上图

     public class Helper
        {
            /// <summary>
            /// word文件转换pdf
            /// </summary>
            /// <param name="wordPath">word的存储地址</param>
            /// <param name="wordSavePath">pdf的存储地址</param>
            /// <returns>返回转换成功pdf的名字</returns>
            public static string Word2Pdf(string wordPath, string wordSavePath)
            {
                string strPdfName=Path .GetFileName(wordSavePath);
                try
                {
                    //此处这样写是为了防止SaveForMat不能识别是属于Aspose.Words还是Aspose.Cells。
                    Aspose.Words.Document dc = new Aspose.Words.Document(wordPath);
                    dc.Save(wordSavePath, Aspose.Words.SaveFormat.Pdf);
                }
                catch (Exception)
                {
                    throw;
                }
                return strPdfName;
            }
    
            /// <summary>
            /// excel文件转换pdf
            /// </summary>
            /// <param name="excelPath">excel的存储地址</param>
            /// <param name="excelSavePath">pdf的存储地址</param>
            /// <returns>返回转换成功pdf的名字</returns>
            public static string Excel2Pdf(string excelPath, string excelSavePath)
            {
                string strPdfName = Path.GetFileName(excelSavePath);
                try
                {
                    Aspose.Cells.Workbook wb = new Aspose.Cells.Workbook(excelPath);
                    wb.Save(excelSavePath, Aspose.Cells.SaveFormat.Pdf);
                }
                catch(Exception)
                {
                    throw;
                }
                return strPdfName;
            }
    
            /// <summary>
            /// Pdf文件转化为Swf
            /// </summary>
            /// <param name="swfTools">转化工具路径。例如:...2_SWFToolspdf2swf.exe</param>
            /// <param name="pdfPath">pdf文件目录。例如:...UploadFilesTest.pdf</param>
            /// <param name="pdfFileName">pdf文件名。例如:Test.pdf</param>
            /// <param name="desPath">保存swf路径。例如:...SwfFiles	est.swf</param>
            /// <returns>转换成功的swf文件。例如:Test.swf</returns>
            public static string PdfToSwf(string swfTools, string pdfPath, string pdfFileName, string swfsavePath)
            {
                //转换成功之后的swf文件名字。例如:test.swf
                string strSwf = Path.GetFileNameWithoutExtension(pdfFileName) + ".swf";
                //命令语句
                string strCmdStr = "  -t  "" + pdfPath + "" -s flashversion=9 -o "" + swfsavePath + """;
                try
                {
                    PdfToSwfHelper(swfTools, strCmdStr);
                }
                catch (Exception)
                {
                    throw;
                }
                return strSwf;
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="toolsPath"></param>
            /// <param name="cmd"></param>
            /// <returns></returns>
            public static bool PdfToSwfHelper(string toolsPath, string cmd)
            {
                bool iss = false;     //判断是否转换成功,默认失败
                try
                {
                    using (Process p = new Process())
                    {
                        ProcessStartInfo psi = new ProcessStartInfo(toolsPath, cmd);
                        psi.WindowStyle = ProcessWindowStyle.Hidden;
                        p.StartInfo = psi;
                        p.Start();
                        p.WaitForExit();
                        iss = true;   //转换成功
                    }
                }
                catch (Exception)
                {
                    iss = false;
                    throw;
                }
                return iss;
            }
        }
     protected void BtnToPdf_Click(object sender, EventArgs e)
            {
                #region 属性
    
                string strPdfName = string.Empty;                                          //生成的pdf文件名
                string strSwfName = string.Empty;                                          //生成的swf文件名
                string strOfficeOrPdfPilePath = Server.MapPath("~/UploadFiles/");          //上传的Office或者Pdf文件的存储路径
                string strSwfFilePath = Server.MapPath("~/SwfFiles/");                     //pdf文件通过pdf2swf.exe转换成swf文件的存储路径
                string strPdf2swfToolPath = Server.MapPath("~/02_SWFTools/pdf2swf.exe");   //pdf2swf.exe的路径,为pdf文件转swf文件做准备
                string strUploadFileFullName = string.Empty;                               //上传文件的全名
                string strPdfSaveFullPath = string.Empty;                                  //office文件转换成pdf的保存地址
                string strSwfSaveFullPath = string.Empty;                                  //pdf文件转换成swf的保存地址
    
                #endregion
    
                //如果此控件有文件
                if (FileUpload1.HasFile)
                {
                    //纯文件名。例如:zjq.doc
                    string strUploadFileName = this.FileUpload1.FileName;
                    //获取文件名字,不包括格式。例如:zjq
                    string strUploadFileNameWithoutEt = Path.GetFileNameWithoutExtension(strUploadFileName).ToLower();
                    //获取上传的文件格式。例如:.doc
                    string strUploadFileType = Path.GetExtension(strUploadFileName).ToLower();
                    //判断上传文件类型
                    if (strUploadFileType == ".doc" || strUploadFileType == ".docx" || strUploadFileType == ".xls" || strUploadFileType == ".xlsx" || strUploadFileType == ".pdf")
                    {
                        //创建OfficeOrPdf文件夹
                        if (!Directory.Exists(strOfficeOrPdfPilePath))
                        {
                            Directory.CreateDirectory(strOfficeOrPdfPilePath);
                        }
                        //创建swf文件夹
                        if (!Directory.Exists(strSwfFilePath))
                        {
                            Directory.CreateDirectory(strSwfFilePath);
                        }
                        //TODO:上传文件的全地址,为了保存使用。此处修改时间戳(maybe?)
                        strUploadFileFullName = strOfficeOrPdfPilePath + strUploadFileName;
                        //TODO:生成的pdf文件要保存的目标地址,此处修改时间戳(maybe?)
                        strPdfSaveFullPath = strOfficeOrPdfPilePath + strUploadFileNameWithoutEt + ".pdf";
                        //TODO:生成的swff文件要保存的目标地址,此处修改时间戳(maybe?)
                        strSwfSaveFullPath = strSwfFilePath + strUploadFileNameWithoutEt + ".swf";
                        //第一步:保存文件
                        FileUpload1.PostedFile.SaveAs(strUploadFileFullName);
                        try
                        {
                            //上传的文件是word
                            if (strUploadFileType == ".doc" || strUploadFileType == ".docx")
                            {
                                //第二步:word转换成pdf
                                strPdfName = Helper.Word2Pdf(strUploadFileFullName, strPdfSaveFullPath);
                            }
                            else if (strUploadFileType == ".xls" || strUploadFileType == ".xlsx")
                            {
                                //excel转换成pdf
                                strPdfName = Helper.Excel2Pdf(strUploadFileFullName, strPdfSaveFullPath);
                            }
                            else if (strUploadFileType == ".pdf")
                            {
                                strPdfName = Path.GetFileName(strUploadFileFullName);
                            }
                            //判断Pdf中是否有指定的pdf文件
                            if (File.Exists(strPdfSaveFullPath))
                            {
                                //第三步:pdf转换swf,最后存储到SwfFiles文件夹中
                                strSwfName = Helper.PdfToSwf(strPdf2swfToolPath, strPdfSaveFullPath, strPdfName, strSwfSaveFullPath);
                            }
                            //如果swf存在并且不为空
                            if (!string.IsNullOrEmpty(strSwfName) && File.Exists(strSwfFilePath + strSwfName))
                            {
                                //显示swf文件
                                this.HiddenField1.Value = "SwfFiles/" + strSwfName;
                            }
                        }
                        catch (Exception ex)
                        {
                            Response.Write("<script>alert('" + ex.Message.ToString() + "')</script>");
                        }
                    }
                }
            }
        }
  • 相关阅读:
    简单sql部分强化练习题
    JS实现鼠标经过用户头像显示资料卡的效果,可点击
    转帖:不吃早餐的危害:真的还是假的?
    转帖:有事没事别刮痧
    《城乡中国》:中国现行城乡分离的制度尤其是土地制度的由来和改革方向 五星推荐
    《只有医生知道》:协和产科大夫的诊疗故事集
    《真北》:作者有德鲁克的机会,没有德鲁克的洞察力
    《转化:提升网站流量和转化率的技巧》:结合市场营销六阶段理论,以SEM为手段,提高网站转化率的技巧
    转贴:气管切开术与噎住时的急救
    《明末农民战争史》:出版于30年前,至今仍是李自成张献忠起义的权威著作
  • 原文地址:https://www.cnblogs.com/zjq1989/p/4161073.html
Copyright © 2011-2022 走看看