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

五:健壮的C#调用代码(实际考虑,可放在B/S系统中)

完成第4步的C#测试后,细心的读者,可能看到一点问题,那就是如何得到脚本运行后输出的结果,如何给线程中调用的StartConvertData方法传递参数

1:传递参数,此话说来也可用一篇教程告诉大家线程中方法如何来传递参数,现在就讲一个方案,此种方案很多,我采用一个类,初始化这个类,然后调用该类的方法作为线程执行的方法

2:得到脚本的输出结果,使用Process对象的输出重定向,就是说改变输出方向,使脚本不输出到控制台(MS-DOS窗口),而是重定向输出到C#程序中,并采用线程的异步回调方法,显示脚本运行结果。

添加一个新类,类名为ToPdf

using System;

using System.Diagnostics;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

namespace Doc2Pdf

{

public class ToPdf

{

private string strWord = "";//此处的WORD文件不含路径

private string sPath = "";

public string sExecResult = "";

public bool bSuccess = false;

public ToPdf(string sParamWord,string sParamPath)

{

strWord = sParamWord;

sPath = sParamPath;

}

public void StartConvertPDF()

{

Process proc = new Process();

proc.StartInfo.FileName = "cmd.exe";

proc.StartInfo.WorkingDirectory = sPath;

proc.StartInfo.CreateNoWindow = true;

proc.StartInfo.UseShellExecute = false;

proc.StartInfo.RedirectStandardInput = true;//标准输入重定向

proc.StartInfo.RedirectStandardOutput = true;//标准输出重定向

proc.Start();

proc.StandardInput.WriteLine("cscript //nologo "+sPath+"ConvertDoc2PDF.js "+sPath+strWord+ " "+sPath);

proc.StandardInput.WriteLine("exit");

sExecResult = proc.StandardOutput.ReadToEnd();//返回脚本执行的结果

proc.WaitForExit();

proc.Close();

}

public void EndConvertPDF(System.IAsyncResult ar)//ar参数必须写,是线程执行完成后的回调函数

{

if(sExecResult.IndexOf("isuccess")!=-1)bSuccess=true;

else if(sExecResult.IndexOf("isfail")!=-1)bSuccess=false;

//如果放在B/S系统,你可以在此处写数据库,是成功还是失败,并用一个WEBService程序不断检查数据库,此WEBService程序不放在该回调用函数中

//如果放在C/S系统,回调函数可以不放在类中,以便在窗体程序中调用结果

}

}

}

改写原来的button1_Click事件中的代码

private void button1_Click(object sender, System.EventArgs e)

{

ToPdf my2Pdf = new ToPdf("test.doc","c:\\");

ThreadStart thStartConvert = new ThreadStart(my2Pdf.StartConvertPDF); //开始异步调用线程

thStartConvert.BeginInvoke(new AsyncCallback(my2Pdf.EndConvertPDF),null);//设置异步线程的回调函数

//如果需要转换多个WORD,你可以用循环

//如果是B/S系统,可以将本段代码放在ASPX中,并结合客户端的无刷新显示数据的技术,不断访问WEBService程序,以确定PDF是否转换成功或失败

}

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

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