由于一个客户的项目中需要将WORD文档转换成PDF格式,实战教程如下:

  需求分析:客户的项目以B/S结构为主,提供一个WORD文件在后台自动转换成PDF,经过实际 测试, 如果该篇WORD文档有100多页的话,转换需要20分钟左右的时间(环境:CPU是奔腾M 1.6G,512M内存),整个CPU的占用率近乎95%~100%,此结果告诉客户以后,客户提议:到客户下班后,自动转换PDF,同时如果使用人确认 要查看该PDF文档,如果没有转换,提供给客户选择,是现在转换成PDF,还是由 服务器在客户下班后,自动转换。

  项目功能:按需求分析要写两个功能

  第一为:B/S结构后台转换,要提交给客户选择

  第二为:windows服务自动转换WORD文档到PDF

  这两个分类:核心的转换程序都是采用线程的方式执行,只不过第一个功能是针对一个WORD文件,第二个功能针对所有未转换的WORD文档.

  分析到现在:我们开始实战转换了!

  一:必备工具

  安装必须的工具MS VS.Net2003,MS Office2003,Adobe Acrobat 7.0 Professional,postscript.exe,gs811w32.exe

  MS VS.Net2003的安装不说明

  MS Office2003的安装不说明

  Adobe Acrobat 7.0 Professional安装说明

  运行setup.exe文件,出现输入序列号,就运行注册机,用鼠标在第一行刷下就可以看见序列号,复制粘贴到Adobe Acrobat 7.0 Professional安装程序对话框,安装到最后出现注册时,点击PHONE...将安装程序中显示的第二行序列号(第一行是刚才注册机生成的序列 号)复制粘贴到注册机的第二行,点击右边的按钮,再用鼠标刷第三行授权号就出来了,将其复制粘贴到安装程序的最后一行,完成安装注册!

  postscript.exe默认安装就可以了,它是一个PDF转换时所需要的脚本

  gs811w32.exe默认安装就可以,它其实是个PDF虚拟打印机的驱动

  二:配置虚拟打印机

  进入windows的控制面板,进入打印机,点击"添加打印机"图标.在安装对话框上"按一步",出现选择打印机时,在制造商一栏中选择"Generic",在打印机一栏中,选择"MS Publisher Color Printer",然后一路按下一步,知道安装结束.

  三:开始写第一个程序(脚本程序)

  为什么要使用脚本程序进行转换呢,其实实际测试过程中,使用PDF Distiller的对象引用到C#后,转换成功,但整个PDF Distiller对象不能释放,第二次再转换时,就发生了错误,故此处使用脚本程序实现转换.这样我们只要在C#的程序中调用脚本程序就可以实现WORD到PDF的转换。

  宿主脚本文件名:ConvertDoc2PDF.js

  脚本文件内容:

var files = WScript.Arguments;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var word = new ActiveXObject("Word.Application");
var PDF = new ActiveXObject("PDFDistiller.PDFDistiller.1");
word.ActivePrinter = "MS Publisher Color Printer";

//files(0) 为WORD文档文件名
//files(1) 为,转换后需要保存的路径
//调用fso.GetBaseName(files(0))后,为无路径,无扩展名,的文件名
//files.length为文件参数的个数,使用循环可以支持多个WORD文档的转换

var docfile = files(0);
var psfile = files(1) + fso.GetBaseName(files(0)) + ".ps";
var pdffile = files(1) + fso.GetBaseName(files(0)) + ".pdf";
var logfile = files(1) + fso.GetBaseName(files(0)) + ".log";

try{
var doc = word.Documents.Open(docfile);
//WORD文件转成PS文件;
word.PrintOut(false, false, 0, psfile);
doc.Close(0);

//PS文件转成PDF文件;
PDF.FileToPDF(psfile,pdffile,"");

fso.GetFile(psfile).Delete();//删除PS脚本文件
fso.GetFile(logfile).Delete();//删除转换的日志文件

word.Quit();
WScript.Echo("isuccess");//成功
WScript.Quit(0);
}
catch(x)
{
word.Quit();
WScript.Echo("isfail");//失败
WScript.Quit(0);
}

  然后测试该脚本程序

  启动MS-DOS,输入如下命令:c:/>cscript //nologo c:/ConvertDoc2PDF.js c:/test.doc c:/

 说明:

  运行成功后将看到test.pdf文档了

  c:/test.doc参数对应的是脚本程序中的files(0)

  c:/参数对应的是脚本程序中的files(1)

  你可以安照该脚本改写成,支持多个参数,使用FOR循环,一次转换多个WORD文档,此处没有使用多个文件转换功能,是考虑到,该段脚本放在C#的线程中执行,这样一来也可以转换多个WORD文档.

  四:使用C#调用ConvertDoc2PDF.js脚本

  新建一个C#的WINDOWS应用程序,添加一个按钮button1

  添加一个函数,函数名StartConvertPDF

public void StartConvertPDF()
{
 Process proc = new Process();
 proc.StartInfo.FileName = "cmd.exe";
 proc.StartInfo.WorkingDirectory = @"c:/";
 proc.StartInfo.CreateNoWindow = true;
 proc.StartInfo.UseShellExecute = false;
 proc.StartInfo.RedirectStandardInput = true; //输入重定向

 proc.Start();
 proc.StandardInput.WriteLine(@"cscript //nologo c:/ConvertDoc2PDF.js c:/test.doc c:/");
 proc.StandardInput.WriteLine("exit");
 proc.WaitForExit();
}

  然后在按钮的CLICK事件中添加调用线程的代码

private void button1_Click(object sender, system.EventArgs e)
{
//定义线程序
Thread thConvert = new Thread(new ThreadStart(StartConvertData));
thConvert.Start();
}

  注意:在测试上面的C#程序时,必须添加如下命名空间

using system.Diagnostics;
using system.Threading;

 结束语:

  Adobe Acrobat 7.0 Professional,postscript.exe,gs811w32.exe这三个文件可以在itbaby.jss.cn下载,都包含在同一个RAR的压缩文件中了。

  itbaby.jss.cn是动态域名,主机在作者家里,如果网站不能访问,说明电脑没有开,请稍后几天再试。

WORD文档转换成PDF格式相关推荐

  1. 通过WPS把Word文档转换成PDF格式

    今天小试了把金山的WPS Office 2009个人版,发现里面有个文档生成PDF文件的功能,感觉挺好的,可以把微软的word文档直接输出成PDF,方便快捷,他们都是专业的文字处理软件,输出的PDF文 ...

  2. 将word文档转换成pdf格式【使用Aspose技术实现:亲测可用】

    提示:Java使用Aspose技术将word文件转换成pdf文件 文章目录 一.介绍 二.下载依赖并引入jar包 三.编写功能 一.介绍 Java语言使用Aspose技术将word转换成pdf文件的功 ...

  3. C# word文档转换成PDF格式文档

    最近用到一个功能word转pdf,有个方法不错,挺方便的,直接调用即可,记录下 方法:ConvertWordToPdf(string sourcePath, string targetPath) so ...

  4. 怎么把word文档转换成PDF?

    Word文件完成编辑之后,想要转发给他人,但是担心在转发过程中出现了格式错乱的情况,将word文档转换成PDF格式再转发就可以避免类似情况了.那么如何将word文档转换成PDF文件? 方法一: 在编辑 ...

  5. 把word文档转换成swf格式

    把word文档转换成swf格式 以前介绍过如何把PPT转换成swf格式,见 方法一 方法二:,也介绍过如何把word转换成pdf格式:点击查看,今天介绍如何把word文档转换成swf文件. 使用swf ...

  6. word文档转换成swf格式文件在网页中用flash显示

    word文档转换成swf格式文件在网页中用flash显示 在OA系统中我们常常需要将上传的word文档在网页中阅览,一般上传后的文档用html的形式查看是会导致排版混乱的,这次我介绍在ASP.NET中 ...

  7. java将WORD文档转换成pdf文件

    总结对jacob和Itext学习总结.本文试验的是将WORD转换成PDF文件. 实现思路 一.先将WORD文档转换成HMTL文件格式(参阅我的前一文<JAVA操作WORD文档). 二.用流读取H ...

  8. python学习之word文档转换成pdf文档

    平时办公的时候总有word文档转换pdf的操作,关键wps等转换工具都还是收费的.这里利用python代码把多个word文档转换合并成pdf文档的实现.代码运行需要几个必要库,没有下载安装的小伙伴可以 ...

  9. 安卓手机如何将Word文档转换成PDF

    相信大家大会去打印机去打印文件,我们大部分都是拿着Word文档去打印,但是Word文档 受软件版本的限制,它会出现格式错乱或者排版不正确. 但是PDF文档就不会受软件版本以及电脑字体的影响而发生排版. ...

最新文章

  1. android 重启后进入安全模式_图文详细教程:台式电脑或笔记本也可以运行Android系统,凤凰OS...
  2. Struts详细用法
  3. Python Challenge-Level 1
  4. hibernate异常之--count查询异常
  5. 配置文件 web.config 的讨论
  6. 12.5PMP试题每日一题
  7. C++ 初始化与赋值
  8. 【技术】一份完全解读:是什么使神经网络变成图神经网络?
  9. 【python】继承时注意事项
  10. 解决eclipse不会自动弹出Console控制台的问题
  11. web工程引用其他java工程_并读取spring配置文件_SpringBoot项目实战(8):四种读取properties文件的方式...
  12. 还原/修改XP任务栏
  13. 第九十五章 SQL函数 MINUTE
  14. android实现悬停效果代码,Android StickListView实现悬停效果
  15. android 判断 音乐是否播放,Android如何判断当前手机是否正在播放音乐并获取有关正在播放的音乐的信息...
  16. vue2或者vue3图片上传功能(upload)
  17. 夏普/sharp willcom d4 刷linux,IT豆
  18. Python爬取古风漫画网
  19. 库的制作---函数库
  20. 代码随想录哈希表——四数之和

热门文章

  1. 强化学习待解决问题和主流Trick整理
  2. 等待事件 enq:TX - row lock contention分析与解决
  3. 【剧前爆米花--爪哇岛寻宝】运算符知识梳理
  4. oracle中统计时间段内每一天的数据
  5. Linux(kali)永恒之蓝(ms17-010)漏洞实验
  6. 连接池连接Mysql数据库
  7. win7系统重装之u盘装系统教程,u盘安装win7系统
  8. C语言assign方法,R语言中assign函数和get函数的用法
  9. react Could not freeze
  10. 解决invalid url domain