【源码】C#开发之Word批量转PDF

简介: 原文 http://www.cnblogs.com/hans_gis/archive/2013/05/25/3098558.html 微软Office Word本身已经提供了另存为PDF文档功能,对于少量文档,手工使用该方式进行Word转换为PDF尚可,一旦需要处理大量的文档,可能就显得有些捉襟见肘了。

原文 http://www.cnblogs.com/hans_gis/archive/2013/05/25/3098558.html

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

源码奉上:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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文档会一直处于被该线程占用的情况。

 

 


作者:韩 锁
出处:http://www.cnblogs.com/hans_gis/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

目录
相关文章
|
4月前
|
XML 测试技术 API
利用C#开发ONVIF客户端和集成RTSP播放功能
利用C#开发ONVIF客户端和集成RTSP播放功能
1772 123
|
10月前
|
存储 SQL 开发框架
c# erp源码(简单进销存)
c# erp源码(简单进销存)
517 1
|
4月前
|
小程序
公众号如何添加附传Word、Excel、Pdf、PPT文档
公众号里添加一些文档给公众号粉丝下载,比如课件PPT、申请表Word文档、岗位需求Excel表、大赛入围/获奖名单等。公众号本身是不支持直接上传文件的,但我们可以通过附件小程序“间接”上传文件。
700 0
|
5月前
|
监控 Linux 数据安全/隐私保护
Python实现Word转PDF全攻略:从入门到实战
在数字化办公中,Python实现Word转PDF自动化,可大幅提升处理效率,解决格式兼容问题。本文详解五种主流方案,包括跨平台的docx2pdf、Windows原生的pywin32、服务器部署首选的LibreOffice命令行、企业级的Aspose.Words,以及轻量级的python-docx+pdfkit组合。每种方案均提供核心代码与适用场景,并涵盖中文字体处理、表格优化、批量进度监控等实用技巧,助力高效办公自动化。
1378 0
|
6月前
|
存储 人工智能 文字识别
三款安卓手机word编辑器下载,Microsoft Word,wps office,Word手机版,手机word编辑查看阅读器,PDF转换器apk下载
WPS Office是一款功能强大的办公软件,支持文档编辑、表格处理和演示文稿制作,兼容多种格式并提供丰富的云服务。它具备低内存占用、快速运行的特点,支持跨设备同步与多人协作,内置海量模板及AI辅助功能,如智能写作和PPT自动生成。此外,还可扫描文件、编辑PDF并转换为其他格式,极大提升办公效率,适合手机用户便捷操作。
662 1
|
8月前
|
人工智能 自然语言处理 安全
CodeBuddy 开发本地 PDF 转图工具
市场上的 PDF 转图片工具存在收费昂贵、功能有限、隐私安全风险等痛点,而使用 CodeBuddy 实现的本地 PDF 批量转图片工具可以有效解决这些问题。CodeBuddy 的强大编程能力让我们可以快速开发出满足需求的工具,而且工具可以在本地运行,保证了文件的隐私安全。此外,工具还支持批量处理和自定义功能,提高了工作效率。如果你也有 PDF 转图片的需求,不妨尝试使用 CodeBuddy 来实现一个属于自己的工具。
299 11
|
8月前
|
人工智能 算法 安全
使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
442 10
|
11月前
|
物联网 数据处理 C#
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据
C#实现上位机开发,串口通信,读写串口数据并处理16进制数据。在自动化、物联网以及工业控制行业中,上位机开发是一项重要的技能。本教程主要介绍使用C#进行上位机开发,重点在于串口通信和数据处理。
2304 82
DeepSeek + Xmind,1分钟自动把pdf/word文档转成思维导图
DeepSeek与Xmind结合,1分钟将PDF、Word文档转换为思维导图。只需四步:上传文档至DeepSeek,请求转换为Markdown格式,保存文件并修改后缀为.md,最后导入Xmind生成思维导图。轻松驾驭复杂文档,适用于学习笔记、工作报告、项目规划等场景,大幅提升效率!
|
9月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
376 0

热门文章

最新文章