二:配置虚拟打印机 进入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文档. |