OA办公软件与PDF文件联系紧密,PDF格式的文件也是办公人员必须掌握的!  设为首页 加入收藏夹 我来推荐 
您的位置:首页 > 常用文件转换成PDF > WORD文档DOC转PDF
WORD文档DOC转PDF
ASP.Net实现将Word转换PDF格式
日期:2009-04-02 14:19:07 人气: 标签:doc2pdf 教程

六:编写更加健壮的C#调用代码 (实际考虑,可放在WINDOWS的服务程序中)

实际使用时,由于转化PDF时CPU的占用率很高,考虑只在同一时间转换一篇WORD文档,放弃异步线程的回调函数的使用,考虑一个WINDOWS的服务程序。

写一个函数CheckData2Convert(),不断的检查没有转换的WORD文档,并使用循环调用ToPdf类中执行转换方法StartConvertPDF

//以下给出,泛代码,用户按照自己的需求,填写完整即可

//bool bStart为全局变量,控制循环的进入与退出

//例:18:30开始检查并转换,那么18:30时,bStart=true;并启动转换线程

//6:30停止转换线程,bStart=fasle;

private void CheckData2Convert()

{

//检查指定目录下的没有转换的WORD文档,你同样可以检查数据库中记录的没有转换的WORD文档

string sPath = System.Threading.Thread.GetDomain().BaseDirectory; //当前的路径

while(bStart)

{

int iFileCount = CheckWord(); //CheckWord为一个方法,检查当前没有转换的WORD文档,返回没有转换的文件数,该方法的代码由读者自己编写

for(int i=0;i<iFileCount;i++)

{

string sWord = GetWordFileName(i) //GetWordFileName为一个方法,返回一个不带路径的WORD文件名,该方法的代码由读者自己编写

//ToPdf类中的StartConvertPDF()方法使用的是不带路径的WORD文件名

ToPdf my2Pdf = new ToPdf(sWord ,sPath);

my2Pdf.StartConvertPDF();

if(my2Pdf.sExecResult.IndexOf("isuccess")!=-1)

{

//成功,写日志,或回写数据库

}

else if(my2Pdf.sExecResult.IndexOf("isfail")!=-1)

{

//失败,写日志,或回写数据库

}

}

if(!bStart)break;

Thread.Sleep(1000);

}

}

然后在服务的开始事件中,启动线程

protected override void OnStart(string[] args)

{

//可以使用一个开始定时器,检查是否到开始时间,时间一到,就开始执行线程,此处的开始执行线程可以放在开始定时事件中

//可以使用一个结束定时器,检查是否到结束时间,时间一到,就结束线程,结束线程的代码可以放在结束定时事件中

//注意:应该使用组件中的定时器,而不是Windows的FORMS中的定时器

//该定时器的类名为System.Timers.Timer,千万别搞错,不然执行不会正常的

bStart = true;

Thread thConvert = new Thread(new ThreadStart(StartConvertData));

thConvert.Start();

}

然后在服务的结束事件中,设置停止线程的标识bStart= false

protected override void OnStop()

{

bStart = false;

//为何次处不停止线程呢,因为考虑到,现在线程正在转换WORD文档,但没有结束,所以只设置停止标识,转换完成后,线程也执行结束了.

}

共有条评论信息评论信息
栏目分类

站点说明 | 站点导航 | 站点公告 |
OAPDF.COM版权所有 2009 V1.1