using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Tools
{
/// <summary>
/// doc文件转换为pdf文件
/// </summary>
public class DocToPdf
{
private string savePath = "";
/// <summary>
/// doc文件路径,包括完整文件名
/// </summary>
public string docFile;
/// <summary>
/// ConvertDoc2PDF.js目录,不包括文件名
/// </summary>
public string jsPath;
/// <summary>
/// 接收的cmd运行的结果
/// </summary>
public string sExecResult = "";
/// <summary>
/// 是否成功
/// </summary>
public bool bSuccess = false;
/// <summary>
///
/// </summary>
/// <param name="sDocFile">源doc路径,包括文件名</param>
/// <param name="sPdfPath">目的pdf目录</param>
public DocToPdf(string sDocFile, string sPdfPath)
{
docFile = sDocFile;
savePath = sPdfPath;
}
/// <summary>
/// 开始转换
/// </summary>
public void StartConvertPDF()
{
Process proc = new Process();
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.WorkingDirectory = jsPath;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;//标准输入重定向
proc.StartInfo.RedirectStandardOutput = true;//标准输出重定向
proc.Start();
proc.StandardInput.WriteLine("cscript //nologo "+jsPath+"ConvertDoc2PDF.js "+docFile+" "+savePath);
//proc.StandardInput.WriteLine("exit");
sExecResult = proc.StandardOutput.ReadToEnd();//返回脚本执行的结果
proc.WaitForExit();
proc.Close();
}
/// <summary>
/// 转换完成后的回调函数
/// </summary>
/// <param name="ar">IAsyncResult对象</param>
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系统,回调函数可以不放在类中,以便在窗体程序中调用结果
}
}
}
要安装ConvertDoc2PDF软件环境,转换时似乎很费cpu和内存。。。