C#实现文档转换成PDF

网上有很多将doc、ppt、xls等类型的文档转换成pdf的方法,目前了解到的有两大类:

1.使用虚拟打印机将doc、ppt、xls等类型的文档

2.使用OFFICE COM组件

我采用了第二种方法实现,初步测试通过,还没有放到服务器上进行批量实时转换的测试。

下面开始介绍详细步骤:

1.安装OFFICE 2007.我安装的是OFFICE 2007 Professional Plus版。安装后提示要激活,开始没有激活也能使用,只是每次一打开office软件就提示要激活,实在忍受不了,就下了一个激活破解补丁。我用的是Office 2007 最新全系列激活验证破解补丁(适用于2007任何版本)绿色免费版激活的。

2.安装"另存为PDF或XPS加载项",可以从官网下载,其他地方也有一大把下载链接。我是从这个地址下载的

3.新建项目,添加如下引用:

Microsoft PowerPoint 12.0 Object Library

Microsoft Word 12.0 Object Library

Microsoft Excel 12.0 Object Library

这三个引用在“添加引用”对话框的COM选项卡里,只有安装了OFFICE 2007后才能看到,系统了安装的是OFFICE 2003的话,看到的是11.0的。

4.添加以上COM引用后,在项目的引用目录下,会看到自动添加了“Microsoft.Office.Interop.Word”、“Microsoft.Office.Interop.Excel”、“Microsoft.Office.Interop.PowerPoint”、“Microsoft.Office.Core”四个引用项,分别右击前三个,选属性,选择”嵌入互操作类型“值为false。如不做此项操作,编译项目时会出现”无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口“的错误提示。

5.在代码中添加如下命名空间引用:

1 using Microsoft.Office.Core;
2 using Microsoft.Office.Interop.Excel;
3 using Microsoft.Office.Interop.PowerPoint;
4 using Word = Microsoft.Office.Interop.Word;
5 using Excel = Microsoft.Office.Interop.Excel;
6 using PowerPoint = Microsoft.Office.Interop.PowerPoint;

开始我以为不用第1-3行,结果发现没有这三行编译通不过。第4-6行的作用仅仅是为了在后面代码中简写命名空间。

6.添加如下三个转换函数:

  1  //将word文档转换成PDF格式
  2         private bool Convert(string sourcePath, string targetPath, Word.WdExportFormat exportFormat)
  3         {
  4             bool result;
  5             object paramMissing = Type.Missing;
  6             Word.ApplicationClass wordApplication = new Word.ApplicationClass();
  7             Word._Document wordDocument = null;
  8             try
  9             {
 10                 object paramSourceDocPath = sourcePath;
 11                 string paramExportFilePath = targetPath;
 12
 13                 Word.WdExportFormat paramExportFormat = exportFormat;
 14                 bool paramOpenAfterExport = false;
 15                 Word.WdExportOptimizeFor paramExportOptimizeFor =
 16                         Word.WdExportOptimizeFor.wdExportOptimizeForPrint;
 17                 Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument;
 18                 int paramStartPage = 0;
 19                 int paramEndPage = 0;
 20                 Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent;
 21                 bool paramIncludeDocProps = true;
 22                 bool paramKeepIRM = true;
 23                 Word.WdExportCreateBookmarks paramCreateBookmarks =
 24                         Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks;
 25                 bool paramDocStructureTags = true;
 26                 bool paramBitmapMissingFonts = true;
 27                 bool paramUseISO19005_1 = false;
 28
 29                 wordDocument = wordApplication.Documents.Open(
 30                         ref paramSourceDocPath, ref paramMissing, ref paramMissing,
 31                         ref paramMissing, ref paramMissing, ref paramMissing,
 32                         ref paramMissing, ref paramMissing, ref paramMissing,
 33                         ref paramMissing, ref paramMissing, ref paramMissing,
 34                         ref paramMissing, ref paramMissing, ref paramMissing,
 35                         ref paramMissing);
 36
 37                 if (wordDocument != null)
 38                     wordDocument.ExportAsFixedFormat(paramExportFilePath,
 39                             paramExportFormat, paramOpenAfterExport,
 40                             paramExportOptimizeFor, paramExportRange, paramStartPage,
 41                             paramEndPage, paramExportItem, paramIncludeDocProps,
 42                             paramKeepIRM, paramCreateBookmarks, paramDocStructureTags,
 43                             paramBitmapMissingFonts, paramUseISO19005_1,
 44                             ref paramMissing);
 45                 result = true;
 46             }
 47             finally
 48             {
 49                 if (wordDocument != null)
 50                 {
 51                     wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing);
 52                     wordDocument = null;
 53                 }
 54                 if (wordApplication != null)
 55                 {
 56                     wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing);
 57                     wordApplication = null;
 58                 }
 59                 GC.Collect();
 60                 GC.WaitForPendingFinalizers();
 61                 GC.Collect();
 62                 GC.WaitForPendingFinalizers();
 63             }
 64             return result;
 65         }
 66
 67         //将excel文档转换成PDF格式
 68         private bool Convert(string sourcePath, string targetPath, XlFixedFormatType targetType)
 69         {
 70             bool result;
 71             object missing = Type.Missing;
 72             Excel.ApplicationClass application = null;
 73             Workbook workBook = null;
 74             try
 75             {
 76                 application = new Excel.ApplicationClass();
 77                 object target = targetPath;
 78                 object type = targetType;
 79                 workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
 80                         missing, missing, missing, missing, missing, missing, missing, missing, missing);
 81
 82                 workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
 83                 result = true;
 84             }
 85             catch
 86             {
 87                 result = false;
 88             }
 89             finally
 90             {
 91                 if (workBook != null)
 92                 {
 93                     workBook.Close(true, missing, missing);
 94                     workBook = null;
 95                 }
 96                 if (application != null)
 97                 {
 98                     application.Quit();
 99                     application = null;
100                 }
101                 GC.Collect();
102                 GC.WaitForPendingFinalizers();
103                 GC.Collect();
104                 GC.WaitForPendingFinalizers();
105             }
106             return result;
107         }
108
109         //将ppt文档转换成PDF格式
110         private bool Convert(string sourcePath, string targetPath, PpSaveAsFileType targetFileType)
111         {
112             bool result;
113             object missing = Type.Missing;
114             PowerPoint.ApplicationClass application = null;
115             Presentation persentation = null;
116             try
117             {
118                 application = new PowerPoint.ApplicationClass();
119                 persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
120                 persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);
121
122                 result = true;
123             }
124             catch
125             {
126                 result = false;
127             }
128             finally
129             {
130                 if (persentation != null)
131                 {
132                     persentation.Close();
133                     persentation = null;
134                 }
135                 if (application != null)
136                 {
137                     application.Quit();
138                     application = null;
139                 }
140                 GC.Collect();
141                 GC.WaitForPendingFinalizers();
142                 GC.Collect();
143                 GC.WaitForPendingFinalizers();
144             }
145             return result;
146         }

7.调用相应函数进行转换:

Convert("C:\\1.doc", "C:\\1.pdf", wd);

开发工具是Visual Studio 2010,Windows XP SP3操作系统,OFFICE 2007.调试了doc,ppt,xls三种格式文件的转换,word测试了一个12页的文档,全部是中文文字。Excel测试了一个有3个sheet的文档(中英文和数字,某些行有背景色),转换后3个表格全部转到一个pdf文件中,无错误。转换速度很快,只是在转换PPT的时候出现了一个“正在发布...”的对话框,完成后对话框消失。不知道如何禁止出现提示框,优质稻的朋友看到贴后麻烦回复告知。

为方便使用,将文档转换的代码做成了一个dll,在项目中直接调用dll中的函数即可进行转换。欢迎点击下载

时间: 2024-10-22 08:04:38

C#实现文档转换成PDF的相关文章

如何把ppt文档转换成pdf

如何把ppt文档转换成pdf 如何把ppt转换成pdf?你是否会在制作ppt的时候想将其转换成PDF格式而上传至网络上与网友共享?使用迅捷ppt转换成pdf转换器就可以很轻松的解决这一问题. 具体操作过程如下: 1 首先手头要有一份ppt演示稿(文稿可以是单个或是多个).在在电脑上桌面上新建2个文件夹,一个取名为“ppt”,另一个命名为“pdf”; 2.双击开打ppt转pdf转换软件(这里以ppt转pdf为例).在“菜单栏”中选择“Office转pdf”; 3.点击添加文件将此“ppt”格式文件

如何将ppt文档转换成pdf

如何将ppt文档转换成pdfpdf转换成ppt,也许你很容易解决,但是反之把ppt转换成pdf你是否知道方法呢?曾经我很笨拙地将ppt里面的文字一段段地粘贴出来,整个过程花费了很多时间,但最后在校对的时候发现还是出现了错误,那个工作量就可想而知了...... 经过后面的不断测试,还是被我幸运的找到了一款非常好用的ppt转换成pdf转换器,其不但方便,还可以起到保护源文件的作用.无需其他高级程序,只需要一个软件就能实现. (一)准备: 1.迅捷ppt转pdf转换器正式版;       2.500张

添加PDF虚拟打印机教程之任意文档转换成PDF方法

将Word转换成PDF有很多方法,例如之前我们也谈过如何使用Office 2010来实现转换.添加PDF虚拟打印机利用"虚拟打印"的方式,也可以将文档转换成为PDF文件,而且在实际操作上,几乎可以将一切能够打印的文档,都打印输出成为PDF文件格式. 我们以下选择一份简单的Word简历作为演示,使用PDF虚拟打印机来将之转换成为PDF文件.使用任何其他文档来操作,都是同样的操作过程,没有任何差别.以下是一份刚刚编辑好的Word简历: 添加PDF虚拟打印机 首先请先选择一款PDF虚拟打印机

ASP.NET将word文档转换成pdf的代码

一.添加引用 using Microsoft.Office.Interop.Word; 二.转换方法 1.方法 C# 代码   复制 /// <summary> /// 把Word文件转换成pdf文件 /// </summary> /// <param name="sourcePath">需要转换的文件路径和文件名称</param> /// <param name="targetPath">转换完成后的文件

Word文档转换成PDF简单方法

Word文档怎么转换成PDF?当我们的Word文档中放置图片的时候是需要我们进行在线将其转换成PDF文档的,那么我们有什么样的方法进行转换的呢?下面小编就给大家简单介绍一下Word转PDF的方法. 步骤一:然后我们直接进入到在线网站的首页,通过在浏览器上进行搜索迅捷PDF在线转换器,然后直接进入即可: 步骤二:然后在导航栏中的文档转换中找到Word转PDF,找到之后就可以进行点击:步骤三:进入之后就可以进行页码的选择,将页码设置好之后就可以进行文件的选择了:步骤四:直接将Word文档拖动到界面中

asp.net将ppt文档转换成pdf

一.添加引用 using Microsoft.Office.Core;using Microsoft.Office.Interop.PowerPoint; 二.转换方法 C# 代码   复制 ///<summary> /// 把PowerPoint文件转换成PDF格式文件 ///</summary> ///<param name="sourcePath">源文件路径</param> ///<param name="targ

如何将手机中Word文档转换成PDF

PDF文件不易被修改所以很多时候我们在编辑完Word文件后需要转换为PDF格式,同时PDF格式的文档便与储存,也便于在不同的设备上查阅,以前Word文档转换为PDF格式的文件需要在电脑上进行,现在手机上面也可以将Word文档转换为PDF格式的文档了,你知道怎么做吗? 手机上需要借助转换工具:迅捷PDF转换器,它是一款提供文件格式转换的办公应用.支持一键完成PDF文件与Office.HTML.TXT和图片文档之间的格式转换,轻巧简便,快速转换,每天转换文档数量100000+,是移动办公方面好用的文

pdf热门干货分享 怎么把pdf文档转换成word

pdf文件不能单独编辑,所以平时我们将word文档转成pdf的经验比较多,而将pdf转换成word的形式少一点,有很多人用最简单粗暴的办法,就是对着pdf文件将里头的内容再一次手动敲成文字,这实在是太浪费时间了,而且效率低下,还容易出错.实际上,随着科学的进步,我们完全可以通过一些PDF转换软件完成格式间的转换工作. 迅捷PDF转换器就可以对PDF文件进行高质量精准解析和转换.拥有多个转换模式,不仅仅局限于普通的PDF转换Word的功能,PDF转换器全面支持多种不同文件格式之间的转换,实现对PD

java将office文档pdf文档转换成swf文件在线预览

java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org   openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文本文档),impress(演示文稿),Calc(电子表格),Draw(绘图),Math(公式),base(数据库) 笔者下载的是openoffice.org 3.3.0.下载完直接安装即可.      但是,我们还需要启动openof