c#调用cmd命令,将doc转换为 pdf

本文介绍了一种使用C#调用CMD命令行工具,借助特定的JavaScript脚本实现将Microsoft Word文档(.doc)转换为PDF格式的方法。此过程涉及设置CMD的工作目录、重定向输入输出等步骤,并提供了转换成功的判断依据。
[csharp]  view plain  copy
 print ?
  1. c#调用cmd命令,将doc转换为 pdf  
[csharp]  view plain  copy
 print ?
  1.    
[csharp]  view plain  copy
 print ?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Diagnostics;  
  5.   
  6. namespace Tools  
  7. {  
  8.    /// <summary>  
  9.    /// doc文件转换为pdf文件  
  10.    /// </summary>  
  11.     public class DocToPdf  
  12.     {  
  13.         private string savePath = "";  
  14.         /// <summary>  
  15.         /// doc文件路径,包括完整文件名  
  16.         /// </summary>  
  17.         public string docFile;   
  18.         /// <summary>  
  19.         /// ConvertDoc2PDF.js目录,不包括文件名  
  20.         /// </summary>  
  21.         public string jsPath;  
  22.         /// <summary>  
  23.         /// 接收的cmd运行的结果   
  24.         /// </summary>  
  25.         public string sExecResult = "";  
  26.         /// <summary>  
  27.         /// 是否成功  
  28.         /// </summary>  
  29.         public bool bSuccess = false;  
  30.         /// <summary>  
  31.         ///   
  32.         /// </summary>  
  33.         /// <param name="sDocFile">源doc路径,包括文件名</param>  
  34.         /// <param name="sPdfPath">目的pdf目录</param>  
  35.         public DocToPdf(string sDocFile, string sPdfPath)  
  36.         {  
  37.             docFile = sDocFile;  
  38.             savePath = sPdfPath;  
  39.         }  
  40.         /// <summary>  
  41.         /// 开始转换  
  42.         /// </summary>  
  43.         public void StartConvertPDF()  
  44.         {  
  45.             Process proc = new Process();  
  46.             proc.StartInfo.FileName = "cmd.exe";  
  47.             proc.StartInfo.WorkingDirectory = jsPath;  
  48.             proc.StartInfo.CreateNoWindow = true;  
  49.             proc.StartInfo.UseShellExecute = false;  
  50.             proc.StartInfo.RedirectStandardInput = true;//标准输入重定向  
  51.             proc.StartInfo.RedirectStandardOutput = true;//标准输出重定向  
  52.             proc.Start();  
  53.             proc.StandardInput.WriteLine("cscript //nologo "+jsPath+"ConvertDoc2PDF.js "+docFile+" "+savePath);  
  54.             //proc.StandardInput.WriteLine("exit");  
  55.             sExecResult = proc.StandardOutput.ReadToEnd();//返回脚本执行的结果  
  56.             proc.WaitForExit();  
  57.             proc.Close();  
  58.         }  
  59.         /// <summary>  
  60.         /// 转换完成后的回调函数  
  61.         /// </summary>  
  62.         /// <param name="ar">IAsyncResult对象</param>  
  63.         public void EndConvertPDF(System.IAsyncResult ar)//ar参数必须写,是线程执行完成后的回调函数  
  64.         {  
  65.             if (sExecResult.IndexOf("isuccess") != -1) bSuccess = true;  
  66.             else if (sExecResult.IndexOf("isfail") != -1) bSuccess = false;  
  67.             //如果放在B/S系统,你可以在此处写数据库,是成功还是失败,并用一个WEBService程序不断检查数据库,此WEBService程序不放在该回调用函数中  
  68.             //如果放在C/S系统,回调函数可以不放在类中,以便在窗体程序中调用结果  
  69.         }  
  70.   
  71.     }  
  72. }  


 

要安装软件环境,转换时似乎很费cpu和内存。。。

 

项目使用VS2017打开,.net 2.0下运行。 项目使用的微软官方的插件方法,可以将doc, docx, xls, xlsx, ppt, pptx文件转换pdf文件,但是需要: 1、用户需要首先安装一个SaveAsPDFandXPS.exe的工具; 2、如果用户是xp系统,则: 2.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application 和 Microsoft Office Document Imaging这2个选项,否则转换失败; 2.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项,然后从office 2007安装包里面安装Microsoft Office Document Imaging(因为2010删除了这个选项,好麻烦~),否则转换失败; 2.3 xp不能安装office 2013/2016; 3、如果用户是win7系统,则: 3.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application 和 Microsoft Office Document Imaging这2个选项,否则转换失败; 3.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项(win7 + office 2010不需要安装Microsoft Office Document Imaging) 3.3 如果用户安装的是office 2013或2016,则不需要额外选项; 4、如果用户是win10系统,则: 4.1 如果用户安装的是office 2007,则用户在安装office 2007的时候必须要安装Visual Basic for Application这个选项,(win10 + office 2007不需要安装Microsoft Office Document Imaging)否则转换失败; 4.2 如果用户安装的是office 2010,则在安装office 2010时必须要安装Visual Basic for Application选项(win10 + office 2010不需要安装Microsoft Office Document Imaging) 4.3 如果用户安装的是office 2013或2016,则不需要额外选项; 5、如果用户安装了wps 2016或者wps 2019也可以正常转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值