c#调用cmd命令,将doc转换为 pdf
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系统,回调函数可以不放在类中,以便在窗体程序中调用结果 } } }
要安装软件环境,转换时似乎很费cpu和内存。。。