服务器端打开office然后采用虚拟打印 转换成pdf

 1 [WebMethod]
 2         public bool ConvertWordTOPDF(string WordPath)
 3         {
 4             bool ret=false;
 5             #region
 6             //string dataName = collection[i].FileName;//本地文件名称(带路径)
 7             //string ip=Request.UserHostAddress;
 8             //string wordname=WordPath;
 9             string wordPath=WordPath;
10             string pdfPath=wordPath.Split(‘.‘)[0]+".pdf";
11             oWord._Document m_Document = null;
12             oWord._Application m_wordApplication = null;
13             object oMissing = Type.Missing;
14             oWord.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();
15             try
16             {
17                 object obj = System.Reflection.BindingFlags.InvokeMethod;
18                 Type wordType = word.GetType();
19                 oWord.Documents docs = word.Documents;
20                 Type docsType = docs.GetType();
21                 object objDocName = wordPath;
22                 oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true });
23                 //打印输出到指定文件
24                 Type docType = doc.GetType();
25                 object printFileName =wordPath.Split(‘.‘)[0]+".ps";
26                 docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName });
27                 object savechanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdSaveChanges;
28                 object saveasPath =wordPath.Split(‘.‘)[0]+"new.doc";
29                 //必须另存为!
30                 doc.SaveAs(ref saveasPath, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
31                 //必须关闭
32                 doc.Close(ref savechanges, ref oMissing, ref oMissing);
33                 wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null,word, null);
34                 //删除另存为文件
35                 try
36                 {
37                     System.IO.File.Delete(saveasPath.ToString());
38                 }
39                 catch
40                 {
41                 }
42                 string o1 = printFileName.ToString();//与生产的PS文件同步
43                 string o2 = pdfPath;
44                 string o3 = "";
45                 //引用将PS转换成PDF的对象
46                 try
47                 {
48                     ACRODISTXLib.PdfDistillerClass pdf = new ACRODISTXLib.PdfDistillerClass();
49                     Type pdfType = pdf.GetType();
50                     pdfType.InvokeMember("FileToPDF", System.Reflection.BindingFlags.InvokeMethod, null, pdf, new object[] { o1, o2, o3 });
51                     pdf = null;
52                     //System.IO.File.Delete( "123.log");//清除转换日志文件
53                 }
54                 catch
55                 { //throw new Exception("PS转PDF处出错!");
56                 }
57                 System.IO.File.Delete( printFileName.ToString());//清除ps文件
58
59                 System.IO.File.Delete( printFileName.ToString().Split(‘.‘)[0]+".log");//清除转换日志文件
60
61                 if(System.IO.File.Exists(pdfPath))
62                 {
63                     ret=true;
64                 }
65                 //为防止本方法调用多次时发生错误,必须停止acrodist.exe进程
66                 foreach (Process proc in System.Diagnostics.Process.GetProcesses())
67                 {
68                     int begpos;
69                     int endpos;
70
71                     string sProcName = proc.ToString();
72                     begpos = sProcName.IndexOf("(") + 1;
73                     endpos = sProcName.IndexOf(")");
74
75                     sProcName = sProcName.Substring(begpos, endpos - begpos);
76
77                     if (sProcName.ToLower().CompareTo("acrodist") == 0)
78                     {
79                         try
80                         {
81                             proc.Kill();
82                         }
83                         catch { }
84                         break;
85                     }
86                 }
87             }
88             catch(Exception ex)
89             {
90
91             }
92
93             return ret;
94             #endregion
95         }

时间: 2024-07-30 03:08:00

服务器端打开office然后采用虚拟打印 转换成pdf的相关文章

用PDF虚拟打印机怎么转换成pdf格式

我们在办公中经常要这里一些文件,而且要将他打印成pdf文件的格式,这时候我们就要用到虚拟打印机了,那么用PDF虚拟打印机怎么转换成pdf格式呢? 下面小编就教大家转换成pdf格式的方法,具体步骤如下. 1.首先我们需要下载一个迅捷PDF虚拟打印机,在电脑上使用,如果没有可以点击(http://dayinji.xjpdf.com/)直接进行下载安装. 2.当我们安装好之后,打开软件,点击界面的"配置设定"选项,对软件的配置设定进行设置. 3.打开右侧的配置设定之后,点击左侧"保

添加PDF虚拟打印机教程之任意文档转换成PDF方法

将Word转换成PDF有很多方法,例如之前我们也谈过如何使用Office 2010来实现转换.添加PDF虚拟打印机利用"虚拟打印"的方式,也可以将文档转换成为PDF文件,而且在实际操作上,几乎可以将一切能够打印的文档,都打印输出成为PDF文件格式. 我们以下选择一份简单的Word简历作为演示,使用PDF虚拟打印机来将之转换成为PDF文件.使用任何其他文档来操作,都是同样的操作过程,没有任何差别.以下是一份刚刚编辑好的Word简历: 添加PDF虚拟打印机 首先请先选择一款PDF虚拟打印机

java调用com组件将office文件转换成pdf

在非常多企业级应用中都涉及到将office图片转换成pdf进行保存或者公布的场景,由于pdf格式的文档方便进行加密和权限控制(类似于百度文库).总结起来眼下将office文件转换 成pdf的方法主要有两种: 1.利用jcob调用ms office的com组件,将office文档转换成pdf. 2.利用jcob调用acrobat将office文档转换成pdf. 在实际使用中发现.因为office不同所以本的文件格式不一致,所以不论什么第三方的转化工具都不可能完美的兼容全部office版本号,最好的

C#将Word转换成PDF方法总结(基于Office和WPS两种方案)

有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然后让客户预览,下面来看一下基于Office和WPS的两种解决方案.  一.基于Office的解决方案(推荐使用这种方式) 正如标题所说,基于Office就是要求服务器上面要安装的有Office.我们通过C#代码来调用COM接口,实现将Word转换成PDF.下面来看一下具体实现,首先引用Microso

C#实现文档转换成PDF

网上有很多将doc.ppt.xls等类型的文档转换成pdf的方法,目前了解到的有两大类: 1.使用虚拟打印机将doc.ppt.xls等类型的文档 2.使用OFFICE COM组件 我采用了第二种方法实现,初步测试通过,还没有放到服务器上进行批量实时转换的测试. 下面开始介绍详细步骤: 1.安装OFFICE 2007.我安装的是OFFICE 2007 Professional Plus版.安装后提示要激活,开始没有激活也能使用,只是每次一打开office软件就提示要激活,实在忍受不了,就下了一个激

怎样将jpg转换成pdf软件

序言: 企业或个人通常会遇到设备终端软件的兼容性和支持性问题,比如,JPG转PDF文本,这给等于给用户设置了一个门槛,遇到需要将JPG转换PDF的转换,该选用什么类型的 JPG转换成PDF转换器比较好呢?小编支招给大家分享一款转换效果比较不错的转换软件,让办公文件转换不再成为烦恼,在介绍之前,我们先普及下PDF文本相关的知识. 1.什么是PDF? PDF是由Adobe公司发明的文件格式,是Portable Document Format的缩写,意为―便携文档格式.它已成为事实上的电子文档标准,越

扫描文件转换成pdf如何实现

扫描的图片文件一般是合作公司或是个人签署的合作一类文件或是重要的具备专业性质的资料文件.这些文件通过扫描仪传送的方式直接将内容发送给对方,文件一般都是经过处理且不会再更改的,文件经过扫描如果需要电子版的资料,转送到电脑上一般是以图片的形式呈现的,一份合同必定要将它们合并在一起一边查看打印,所以有很多扫描文件转换的pdf的情况,现如今人们都希望知道扫描文件转换的pdf文件方法. 扫描文件转换成pdf如何实现?也就是图片如何转换成pdf文件,或是jpg如何转换成pdf文件,对于这样的问题我们可以使用

多页Excel转换成PDF时如何保存为单独文件

通过ABBYY PDF Transformer+图文识别软件,使用PDF-XChange打印机将多页Excel工作簿转换成PDF文档(相关文章请参考ABBYY PDF Transformer+从MS Office中轻松创建PDF文件)的过程中,不少小伙伴发现Excel中的表格被保存成了单独文件,遇到这种情况该怎么办呢? 问题描述:通过ABBYY PDF Transformer+,使用PDF X-Change 5.0 for ABBYY将多页Excel工作簿转换成PDF时,Excel中的每个表格保

ASP.NET将word文档转换成pdf的代码

一.添加引用 using Microsoft.Office.Interop.Word; 二.转换方法 1.方法 C# 代码   复制 /// <summary> /// 把Word文件转换成pdf文件 /// </summary> /// <param name="sourcePath">需要转换的文件路径和文件名称</param> /// <param name="targetPath">转换完成后的文件