把Word转换成pdf程序

using oWord = Microsoft.Office.Interop.Word;
private void WordConvert()
  {

    oWord.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();
    Type wordType= word.GetType();

    //打开WORD文档
    /*对应脚本中的
     var word = new ActiveXObject("Word.Application");
     var doc  = word.Documents.Open(docfile);
    */
    oWord.Documents docs = word.Documents;
    Type docsType = docs.GetType();
    object objDocName = @"c:\test.doc";
    oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] {objDocName, true, true});

    //打印输出到指定文件
    //你可以使用 doc.PrintOut();方法,次方法调用中的参数设置较繁琐,建议使用 Type.InvokeMember 来调用时可以不用将PrintOut的参数设置全,只设置4个主要参数
    Type docType = doc.GetType();
    object printFileName = @"c:\test.ps";
    docType.InvokeMember("PrintOut",System.Reflection.BindingFlags.InvokeMethod,null,doc,new object[]{false,false,oWord.WdPrintOutRange.wdPrintAllDocument,printFileName});
    //new object[]{false,false,oWord.WdPrintOutRange.wdPrintAllDocument,printFileName}
    //对应脚本中的word.PrintOut(false, false, 0, psfile);的参数

    //退出WORD
    //对应脚本中的word.Quit();
    wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod,null, word, null);

   
    
   
    object o1= "c:\\test.ps";
    object o2= "c:\\test.pdf";
    object o3= "";

   //引用将PS转换成PDF的对象
   //try catch之间对应的是脚本中的 PDF.FileToPDF(psfile,pdffile,"");   //你可以使用 pdfConvert.FileToPDF("c:\\test.ps","c:\\test.pdf","");这样的转换方法,本人只是为了保持与WORD相同的调用方式
   try
   {
    ACRODISTXLib.PdfDistillerClass pdf = new ACRODISTXLib.PdfDistillerClass();
    Type pdfType = pdfConvert.GetType();
    pdfType.InvokeMember("FileToPDF",System.Reflection.BindingFlags.InvokeMethod,null,pdf,new object[]{o1,o2,o3});
    pdf = null;
   }
   catch{} //读者自己补写错误处理

    //为防止本方法调用多次时发生错误,必须停止acrodist.exe进程
    foreach(Process proc in System.Diagnostics.Process.GetProcesses())
    {
     int begpos;
     int endpos;

     string sProcName = proc.ToString();
     begpos = sProcName.IndexOf("(")+1;
     endpos = sProcName.IndexOf(")");
    
     sProcName=sProcName.Substring(begpos,endpos-begpos);

     if(sProcName.ToLower().CompareTo("acrodist")==0)
     {
      try
      {
       proc.Kill(); //停止进程
      }
      catch{}  //读者自己补写错误处理
      break;
     }
    }


  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值