当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-10-25

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

微软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文档会一直处于被该线程占用的情况。


    
 
 

您可能感兴趣的文章:

  • 请问在工作岗位的朋友!使用java开发的公司对c#的态度如何?
  • 希望了解java,能推荐一个好的开发工具和一本好的入门书籍吗?我以前直到现在都在用VC,接下来想在C#和java中选一个做为第二语言。
  • 使用C#开发Socket通讯的方法
  • 郁闷散分,最近换部门了,使用.net,c#开发,VSTS2005
  • php如何调用c#开发的dll类库?
  • PHP调用C#开发的dll类库方法
  • C# WinForm开发中使用XML配置文件实例
  • C# 开发圆角控件(窗体)的具体实现
  • C#开发纽曼USB来电小秘书客户端总结
  • C#开发Windows服务实例之实现禁止QQ运行
  • c#开发的程序安装时动态指定windows服务名称
  • 使用VS2010 C#开发ActiveX控件(下),完整代码打包下载
  • 使用c#开发公众平台自定义菜单功能
  • c# AJAX实践VS2005 + RSSToolKit 开发你自己的RSS在线阅读器
  • C#开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨
  • 使用VS2010 C#开发ActiveX控件(上)
  • 装内核开发源码
  • 急需按键驱动源码 s3c2410开发板 linux-2.6.33的内核
  • 在redhat开发驱动时,需要下载一个linux源码,编译,替掉原有的内核吗?
  • 我想开发一个LINUX下的telnet服务器软件,大侠能否提供源码或者是链接?
  • 哪位知道有没有关于File replication service方面的开发包或者源码?
  • 有本详细介绍minux开发过程及源码分析的书叫什么?
  • 请问那位有Java 2 高级开发指南(Philip Heller,Simon Roberts著)的配书源码下载
  • Python开发者社区整站源码 Pythoner
  • Eclipse开发环境导入android sdk的sample中的源码
  • 我想在hp unix下开发一个ftp工具(c/c++),请高手给些资料或源码
  • CI框架开发新浪微博登录接口源码完整版
  • 基于spring+hibernate+JQuery开发之电子相册(附源码下载)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 分享Android开发中最有效率最快的循环代码
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(二)
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(八)
  • 有没有用CUPS的API开发过程序的,能不能过来分享一下经验。
  • Android UI开发 View自绘控件 分享
  • 分享Android平板电脑上开发应用程序不能全屏显示的问题解决
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(三)
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(七)
  • jquery插件开发之实现jquery手风琴功能分享
  • 【百度分享】Socket通讯模块压力及大数据对比工具开发之aperlib(一)
  • 页面间隔半秒钟更新时间 Asp.net使用Comet开发http长连接示例分享
  • 在linux下用c做开发,我需要用autoconf等工具,请各位分享经验,3q
  • PHP大师的10个开发原则(经验分享)
  • android开发之方形圆角listview代码分享
  • winform开发使用通用多线程基类分享(以队列形式)
  • Python开发实例分享bt种子爬虫程序和种子解析
  • VS2012+MySQL+SilverLight5的MVVM开发模式介绍
  • linux 嵌入式开发用不用买开发板,买什么样的开发板?
  • ios app 开发中ipa重新签名步骤介绍
  • 请问shell 开发能开发什么样的程序?硬件的驱动程序是否能够开发呢?
  • 几个windows平台C++开发错误举例
  • 请问在Linux 下用C开发移动增值软件都有什么开发工具啊,我以前一直在Windows下用VC开发
  • IOS开发:UIScrollView类介绍及如何简单地截获touch事件
  • 我常未开发过Linux下的程序,请问Linux下可以使用那些开发工具,最好的开发工具是什么版本?
  • 几个windows平台C++开发错误举例 iis7站长之家
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
  • 各位设备驱动开发的朋友,请问,linux设备驱动开发和网络编程开发哪一样工资比较高呀?
  • ​基于Docker的大数据开发实践
  • Linux Kernel/Network 技术QQ群14888802,只加有内核开发、TCP/IP协议栈开发的程序员,不加新手和做应用开发的程序员。
  • Android及andriod无线网络Wifi开发的几点注意事项


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3