c#开发word批量转pdf源码分享

微软Office Word本身已经提供了另存为PDF文档功能,对于少量文档,手工使用该方式进行Word转换为PDF尚可,一旦需要处理大量的文档,可能就显得有些捉襟见肘了。不过对于已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF了。

源码:

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;
using Microsoft.Office.Interop.Word;

namespace Word2Pdf
{
    class Program
    {
        public static Microsoft.Office.Interop.Word.Document wordDocument { get; set; }

static void Main(string[] args)
        {
            string strFolder_f = null;
            string strFolder_t = null;
            string strFlag = null;
            System.Console.WriteLine("请输入Word文档所在目录");
            strFolder_f = System.Console.ReadLine();
            if (strFolder_f.Substring(strFolder_f.Length - 1, 1) != "\\")
            {
                strFolder_f += "\\";
            }
            strFolder_t = strFolder_f + @"pdf\";
            System.Console.WriteLine("\n创建PDF文档,请确认!");
            System.Console.Write("y(yes) or n(no) ?  ");
            strFlag = System.Console.ReadLine();
            if (strFlag == "y")
            {
                System.Console.WriteLine("\n开始创建PDF文档...");
                CheckFolder(strFolder_t);
                string strPdfFile = null;
                DirectoryInfo TheFolder = new DirectoryInfo(strFolder_f);

Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
                object paramMissing = Type.Missing;

foreach (FileInfo NextFile in TheFolder.GetFiles())
                {
                    strPdfFile = Path.ChangeExtension(strFolder_t + NextFile.Name, ".pdf");
                    wordDocument = appWord.Documents.Open(NextFile.FullName);
                    if (wordDocument != null)
                    {
                        wordDocument.ExportAsFixedFormat(strPdfFile, WdExportFormat.wdExportFormatPDF);
                        wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing);
                        wordDocument = null;
                    }
                    System.Console.Write(".. ");
                }

if (appWord != null)
                {
                    appWord.Quit(ref paramMissing, ref paramMissing, ref paramMissing);
                    appWord = null;
                }
            }

//KillProcessByName("WINWORD");
            GC.Collect();
            GC.WaitForPendingFinalizers();

System.Console.Write("\n处理完毕,输入任意键退出");
            System.Console.ReadKey();
        }

static void CheckFolder(string strFolderPath)
        {
            if (Directory.Exists(strFolderPath))
            {
                Directory.Delete(strFolderPath, true);
                Directory.CreateDirectory(strFolderPath);
            }
            else
            {
                Directory.CreateDirectory(strFolderPath);
            }
        }

static void KillProcessByName(string name)
        {
            Process[] ps = Process.GetProcessesByName(name);
            foreach (Process p in ps)
            {
                if (p.ProcessName == name)
                    p.Kill();
            }
        }
    }
}

需要注意的两个问题:①及时关闭代码中所打开的文档,见49行,否则会产生临时文件;②及时关闭“WINWORD”线程,否则所处理的Word文档会一直处于被该线程占用的情况。

(0)

相关推荐

  • C# Word 类库的深入理解

    代码如下所示: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Text;using Microsoft.Office.Interop.Word;using System.IO;using System.Web;using System.Data;using System.Reflection;using Microsoft.Win32;using System.Text.RegularExpressio

  • word ppt excel文档转换成pdf的C#实现代码

    复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms; using Word = Microsoft.Office.Interop.Word;using Excel = Micro

  • asp.net(c#)下读取word文档的方法小结

    第一种方法: 复制代码 代码如下: Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "Application/msword"; string s=Server.MapPath("C#语言参考.doc"); Response.WriteFile("C#语言参考.doc"); Response.Write(s); Response.Flush(); Re

  • C#实现通过模板自动创建Word文档的方法

    本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法如下: 引言:前段时间有项目要用c#生成Word格式的计算报告,通过网络查找到很多内容,但是都很凌乱,于是自己决定将具体的步骤总结整理出来,以便于更好的交流和以后相似问题可以迅速的解决! 现通过具体的示例演示具体的步骤:   第一步,制作模板   1.新建一个文档,设置文档内容. 2.在相应位置插入书签:将鼠标定位到要插入书签的位置,点击"插入">"书签&quo

  • C# 利用Aspose.Words.dll将 Word 转成PDF

    只要把aspose.words.dll 在bin中添加引用即可. 复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using Aspose.Words;using Aspose.Words.Saving;usi

  • 比较全的一个C#操作word文档示例

    最近两天研究了一下如何使用VS2008(C#语言)输出Word文档.以下是几点总结: 1.非常简单. 2.开发及运行环境要求.操作系统为:WindowsXP(安装.net framework2.0)/Vista/Win7:在操作系统必须安装Word2003完全安装版.这里必须要强调是Word2003完全安装版,因为软件开发及运行都需要一个com组件:Microsoft word 11.0 Object Library.如果不是Word2003完全安装版,可以下载这个com组件,并手动的安装这个c

  • C#根据Word模版生成Word文件

    本文实例为大家分享了C#根据Word模版生成Word文的具体代码,供大家参考,具体内容如下 1.指定的word模版 2.生成word类 添加com Microsoft word 11.0 Object Library 引用 using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; using Word = Microsoft.Office.Interop.Word;

  • JavaScript打开word文档的实现代码(c#)

    在C#中打开word文档其实不算太难,方法也比较多. 一.C#中打开word文档方法 复制代码 代码如下: //在项目引用里添加上对Microsoft Word 11.0 object library的引用 private void button1_Click(object sender, System.EventArgs e) { //调用打开文件对话框获取要打开的文件WORD文件,RTF文件,文本文件路径名称 OpenFileDialog opd = new OpenFileDialog()

  • 使用c#在word文档中创建表格的方法详解

    复制代码 代码如下: public string CreateWordFile()        {            string message = "";            try            {                Object Nothing = System.Reflection.Missing.Value;                string name = "xiehuan.doc";               

  • C# WORD操作实现代码

    1.先通过程序生成报表样式的HTML页面,然后修改HTML页面的后缀名为DOC. 2.定制WORD文档的模板文件,在C#中操作WORD模板,生成新的WORD文档. 第一方案简单,只需要改动文件的扩展名就行了,但是也存在了一些问题,譬如生成的WORD文档样式的丢失.这样对于客户来说可能是一个无法通过的方案.第二方案比较复杂,需要调用OFFICE的WORD组件通过C#来操作WORD,进而生成WORD.此方法类似于我们在c#中的后台拼接数据.虽然麻烦,但是能够灵活定制,只不过是操作WORD对象而已.

随机推荐