第一个版本,查看

为什么要写第二个版本呢,当时再完成项目时,比较赶,没有多考虑,就借用cscript方式写了个脚本,现在该项目已经开完评审会,有时间重新将该程序重写,直接使用纯C#来完成.

当时由于在使用ACRODISTXLib.PdfDistillerClass发生错误,主要是转换一篇文档后,无法释放,再次调用时发生错误.

同第一版一样,安装需要的环境,注意其中提到的安装打印机.以下代码并没有提供当前的打印机,而是使用系统默认的,即设置的"MS Publisher Color Printer".
注意必须添加引用Acrobat Distiller与WORD,本人使用的是WORD2003

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;
     }
    }

}

Word转换PDF格式的C#第二版(不再使用WSH宿主脚本)相关推荐

  1. 实战用C#将Word转换PDF格式

    原文地址:点击打开链接 知识点:线程调用,异步线程,异步线程回调函数,C#的类,WSH宿主脚本开发 前言:由于一个客户的项目中需要将WORD文档转换成PDF格式,故写了本篇实站教程  需求分析:客户的 ...

  2. Word转换PDF格式的C#或ASP.Net实战

    <script language='javascript' src='http://www.shiqiaotou.com/donetk/Header.js'></script> ...

  3. ASP.Net实现将Word转换PDF格式

    前言:由于一个客户的项目中需要将 Word文档 转换成 PDF 格式,故写了本篇实站教程 需求分析:客户的项目以B/S结构为主,提供一个Word文件在后台自动转换成PDF,经过实际测试,如果该篇Wor ...

  4. java : word,excel,img,ppt各种文档转换pdf格式以流方式

    前提: 面对各种文件转换pdf格式,我下面写的都是一些方法,其中每个方法都以流的方式进行参数的传递. 通过猿友的帮忙,修改了部分jar包,解决excel转换pdf导致的水印问题~ 源码链接:https ...

  5. 关于poi操作word,word转换pdf预览,这边文章就够了

    最近公司一个项目中需要导出一个简历word版,对于实习生的我开始是无从下手的,后来通过搜索发现可以使用poi来操作. 话不多说,先引入依赖 <dependency><groupId& ...

  6. ppt如何转换pdf格式

    ppt如何转换pdf格式 身为办公一族成员,工作中常常会用到Office办公系统来进行文字的录入.排版以及绘图等等,然,有时为了步让自己精心制作好的ppt文稿为他人窃取,大部分人更愿意将之转为pdf文 ...

  7. Linux系统Word转换PDF,文档字体乱码不显示问题解决。

    1.问题 在Windows系统中,使用Java将Word文档转换为PDF格式时,结果文档内容正常:但是在Linux系统中,转出来PDF文档出现乱码或###符号等. 2.问题原因 这个问题是由于Linu ...

  8. 手机PDF转换器如何实现PPT转换PDF格式

    手机版PDF转换器怎么样?如何将PPT转换PDF格式?听到这里相信大家感兴趣的不是PPT转换PDF,而是手机版PDF转换器.之前相信大家只用过电脑端转换文件格式,手机版PDF转换器怎么转换文件格式呢? ...

  9. cad批量转换pdf格式

    cad批量转换pdf格式?如果你是从事机械设计.建筑或者电路板等领域的工作,那么肯定经常要接触到cad图纸,大家也都知道想要打开cad图纸文件需要有专业的软件才行,但是很多时候我们的场地没有这个条件, ...

最新文章

  1. 双十一报名截止,决赛在即!AI Challenger2018极客峰会免费抢票!
  2. HDOJ1035 ( Robot Motion ) 【递归】
  3. C# 入门之 Hello World
  4. 借贷记账法下的账户对应关系_笔记整理,会计复式记账法内容及实例
  5. C/C++命令行参数那点事
  6. codeforces 749
  7. kettle工具使用教程
  8. html页面实现右下角弹窗提示,JS 实现右下角弹窗
  9. 计算机安装系统后鼠标无法使用,电脑重装系统后鼠标键盘不能用怎么办,鼠标键盘不能用解决方法...
  10. vscode vue代码格式化无效详细解决方案
  11. Model-based evolutionary algorithms: a short survey 阅读笔记
  12. Python生成彩色字符画
  13. 如何通过Apple ID找回弄丢的设备
  14. 2019经济寒冬,软件定制开发公司的竞争力在哪里??
  15. Java毕设项目-商城管理系统-基于J2EE/SSM化妆品商城系统的设计与实现
  16. rootless宁静机制_乘风破浪的姐姐 英文名决定了你的江湖地位!
  17. 安装Deepin后,无法进入windows解决
  18. 金蝶KIS专业版实现'条码标签打印'功能对物料多个条码打印
  19. 微信网页授权登录且实现access_token分布式管理
  20. SKIL/安装/更新

热门文章

  1. Windows下的Dump文件
  2. android intent调用,Android Intent调用 Uri的方法总结
  3. 苹果“Enhanced Siri”,你知道多少?
  4. 数据结构学习(列表:五(有序列表的排序算法))
  5. 教师考试计算机专业试题,小学信息技术教师考试试题
  6. [转帖]csdn windows 下载整理.
  7. SpringBoot手动开启事务:DataSourceTransactionManager
  8. 接任务时一定要锁定需求啊!(转自小明同学)
  9. Android的动画机制一 ----逐帧动画
  10. 教你如何阅读本书,如何学好软件设计——软件设计精要与模式前言