选择显示字体大小

asp.net实现将word转换pdf格式

前言:由于一个客户的项目中需要将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文档.

本新闻共3


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons