Word转换PDF格式的C#第二版(不再使用WSH宿主脚本)
第一个版本,查看
为什么要写第二个版本呢,当时再完成项目时,比较赶,没有多考虑,就借用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宿主脚本)相关推荐
- 实战用C#将Word转换PDF格式
原文地址:点击打开链接 知识点:线程调用,异步线程,异步线程回调函数,C#的类,WSH宿主脚本开发 前言:由于一个客户的项目中需要将WORD文档转换成PDF格式,故写了本篇实站教程 需求分析:客户的 ...
- Word转换PDF格式的C#或ASP.Net实战
<script language='javascript' src='http://www.shiqiaotou.com/donetk/Header.js'></script> ...
- ASP.Net实现将Word转换PDF格式
前言:由于一个客户的项目中需要将 Word文档 转换成 PDF 格式,故写了本篇实站教程 需求分析:客户的项目以B/S结构为主,提供一个Word文件在后台自动转换成PDF,经过实际测试,如果该篇Wor ...
- java : word,excel,img,ppt各种文档转换pdf格式以流方式
前提: 面对各种文件转换pdf格式,我下面写的都是一些方法,其中每个方法都以流的方式进行参数的传递. 通过猿友的帮忙,修改了部分jar包,解决excel转换pdf导致的水印问题~ 源码链接:https ...
- 关于poi操作word,word转换pdf预览,这边文章就够了
最近公司一个项目中需要导出一个简历word版,对于实习生的我开始是无从下手的,后来通过搜索发现可以使用poi来操作. 话不多说,先引入依赖 <dependency><groupId& ...
- ppt如何转换pdf格式
ppt如何转换pdf格式 身为办公一族成员,工作中常常会用到Office办公系统来进行文字的录入.排版以及绘图等等,然,有时为了步让自己精心制作好的ppt文稿为他人窃取,大部分人更愿意将之转为pdf文 ...
- Linux系统Word转换PDF,文档字体乱码不显示问题解决。
1.问题 在Windows系统中,使用Java将Word文档转换为PDF格式时,结果文档内容正常:但是在Linux系统中,转出来PDF文档出现乱码或###符号等. 2.问题原因 这个问题是由于Linu ...
- 手机PDF转换器如何实现PPT转换PDF格式
手机版PDF转换器怎么样?如何将PPT转换PDF格式?听到这里相信大家感兴趣的不是PPT转换PDF,而是手机版PDF转换器.之前相信大家只用过电脑端转换文件格式,手机版PDF转换器怎么转换文件格式呢? ...
- cad批量转换pdf格式
cad批量转换pdf格式?如果你是从事机械设计.建筑或者电路板等领域的工作,那么肯定经常要接触到cad图纸,大家也都知道想要打开cad图纸文件需要有专业的软件才行,但是很多时候我们的场地没有这个条件, ...
最新文章
- 双十一报名截止,决赛在即!AI Challenger2018极客峰会免费抢票!
- HDOJ1035 ( Robot Motion ) 【递归】
- C# 入门之 Hello World
- 借贷记账法下的账户对应关系_笔记整理,会计复式记账法内容及实例
- C/C++命令行参数那点事
- codeforces 749
- kettle工具使用教程
- html页面实现右下角弹窗提示,JS 实现右下角弹窗
- 计算机安装系统后鼠标无法使用,电脑重装系统后鼠标键盘不能用怎么办,鼠标键盘不能用解决方法...
- vscode vue代码格式化无效详细解决方案
- Model-based evolutionary algorithms: a short survey 阅读笔记
- Python生成彩色字符画
- 如何通过Apple ID找回弄丢的设备
- 2019经济寒冬,软件定制开发公司的竞争力在哪里??
- Java毕设项目-商城管理系统-基于J2EE/SSM化妆品商城系统的设计与实现
- rootless宁静机制_乘风破浪的姐姐 英文名决定了你的江湖地位!
- 安装Deepin后,无法进入windows解决
- 金蝶KIS专业版实现'条码标签打印'功能对物料多个条码打印
- 微信网页授权登录且实现access_token分布式管理
- SKIL/安装/更新
热门文章
- Windows下的Dump文件
- android intent调用,Android Intent调用 Uri的方法总结
- 苹果“Enhanced Siri”,你知道多少?
- 数据结构学习(列表:五(有序列表的排序算法))
- 教师考试计算机专业试题,小学信息技术教师考试试题
- [转帖]csdn windows 下载整理.
- SpringBoot手动开启事务:DataSourceTransactionManager
- 接任务时一定要锁定需求啊!(转自小明同学)
- Android的动画机制一 ----逐帧动画
- 教你如何阅读本书,如何学好软件设计——软件设计精要与模式前言