项目快结项了,就差最后一个在线预览功能了。研究了两天。不通过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">转化工具路径。例如:...\02_SWFTools\pdf2swf.exe</param> /// <param name="pdfPath">pdf文件目录。例如:...\UploadFiles\Test.pdf</param> /// <param name="pdfFileName">pdf文件名。例如:Test.pdf</param> /// <param name="desPath">保存swf路径。例如:...\SwfFiles\test.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>"); } } } } }