前面两篇博客讲解了怎么通过程序控制word的生成,包括生成文字、添加表格、添加图片等。这篇博客主要说一下怎么把word图片转换成pdf。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;using Microsoft.Office.Core;namespace PDFTest
{class PDFUtil{/// <summary>/// 把Word文件转换成为PDF格式文件/// </summary>/// <param name="sourcePath">源文件路径</param>/// <param name="targetPath">目标文件路径</param> /// <returns>true=转换成功</returns>public static bool WordToPDF(string sourcePath, string targetPath){bool result = false;Microsoft.Office.Interop.Word.WdExportFormat exportFormat = Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF;Microsoft.Office.Interop.Word.ApplicationClass application = null;Microsoft.Office.Interop.Word.Document document = null;try{application = new Microsoft.Office.Interop.Word.ApplicationClass();application.Visible = false;document = application.Documents.Open(sourcePath);document.SaveAs2();document.ExportAsFixedFormat(targetPath, exportFormat);result = true;}catch (Exception e){Console.WriteLine(e.Message);result = false;}finally{if (document != null){document.Close();document = null;}if (application != null){application.Quit();application = null;}GC.Collect();GC.WaitForPendingFinalizers();GC.Collect();GC.WaitForPendingFinalizers();}return result;}/// <summary>/// 把Microsoft.Office.Interop.Excel文件转换成PDF格式文件/// </summary>/// <param name="sourcePath">源文件路径</param>/// <param name="targetPath">目标文件路径</param> /// <returns>true=转换成功</returns>//public static bool ExcelToPDF(string sourcePath, string targetPath)//{// bool result = false;// Microsoft.Office.Interop.Excel.XlFixedFormatType targetType = Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF;// object missing = Type.Missing;// Microsoft.Office.Interop.Excel.ApplicationClass application = null;// Microsoft.Office.Interop.Excel.Workbook workBook = null;// try// {// application = new Microsoft.Office.Interop.Excel.ApplicationClass();// application.Visible = false;// workBook = application.Workbooks.Open(sourcePath);// workBook.SaveAs();// workBook.ExportAsFixedFormat(targetType, targetPath);// result = true;// }// catch (Exception e)// {// Console.WriteLine(e.Message);// result = false;// }// finally// {// if (workBook != null)// {// workBook.Close(true, missing, missing);// workBook = null;// }// if (application != null)// {// application.Quit();// application = null;// }// GC.Collect();// GC.WaitForPendingFinalizers();// GC.Collect();// GC.WaitForPendingFinalizers();// }// return result;//}/// <summary>/// 把PowerPoint文件转换成PDF格式文件/// </summary>/// <param name="sourcePath">源文件路径</param>/// <param name="targetPath">目标文件路径</param> /// <returns>true=转换成功</returns>//public static bool PowerPointToPDF(string sourcePath, string targetPath)//{// bool result;// Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType targetFileType = Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF;// object missing = Type.Missing;// Microsoft.Office.Interop.PowerPoint.ApplicationClass application = null;// Microsoft.Office.Interop.PowerPoint.Presentation persentation = null;// try// {// application = new Microsoft.Office.Interop.PowerPoint.ApplicationClass();// //application.Visible = MsoTriState.msoFalse;// persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);// persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);// result = true;// }// catch (Exception e)// {// Console.WriteLine(e.Message);// result = false;// }// finally// {// if (persentation != null)// {// persentation.Close();// persentation = null;// }// if (application != null)// {// application.Quit();// application = null;// }// GC.Collect();// GC.WaitForPendingFinalizers();// GC.Collect();// GC.WaitForPendingFinalizers();// }// return result;//}/// <summary>/// 把Visio文件转换成PDF格式文件/// </summary>/// <param name="sourcePath">源文件路径</param>/// <param name="targetPath">目标文件路径</param> /// <returns>true=转换成功</returns>//public static bool VisioToPDF(string sourcePath, string targetPath)//{// bool result;// Microsoft.Office.Interop.Visio.VisFixedFormatTypes targetType = Microsoft.Office.Interop.Visio.VisFixedFormatTypes.visFixedFormatPDF;// object missing = Type.Missing;// Microsoft.Office.Interop.Visio.ApplicationClass application = null;// Microsoft.Office.Interop.Visio.Document document = null;// try// {// application = new Microsoft.Office.Interop.Visio.ApplicationClass();// application.Visible = false;// document = application.Documents.Open(sourcePath);// document.Save();// document.ExportAsFixedFormat(targetType, targetPath, Microsoft.Office.Interop.Visio.VisDocExIntent.visDocExIntentScreen, Microsoft.Office.Interop.Visio.VisPrintOutRange.visPrintAll);// result = true;// }// catch (Exception e)// {// Console.WriteLine(e.Message);// result = false;// }// finally// {// if (application != null)// {// application.Quit();// application = null;// }// GC.Collect();// GC.WaitForPendingFinalizers();// GC.Collect();// GC.WaitForPendingFinalizers();// }// return result;//}}
}
程序中包含了各种office格式转换pdf的代码,在使用之前,一定要加载对应的COM库进来,然后才可以使用。