1、WPS安装,最好用这个版本别的版本不清楚,安装Pro Plus2016版本。

https://ep.wps.cn/product/wps-office-download.html

2、添加相关的引用:wpsapiex.dll,etapi.dll,wppapi.dll,wpsapi.dll,目前就发现这几个

3、代码类如下

    /// <summary>
/// WPS文件转Pdf类
/// </summary>
public class ToPdfHelper : IDisposable
{
/// <summary>
/// 是否杀死全部WPS程序
/// </summary>
public bool IsKillAllWps = false;
//Wps的动态对象
dynamic wps;
/// <summary>
/// 初始化类基础信息
/// </summary>
/// <param name="FilePath">文件路径</param>
/// <param name="IsKillAllWps">转换完成后是否杀死全部WPS应用</param>
public ToPdfHelper(string FilePath, bool IsKillAllWps = false)
{
if (File.Exists(FilePath))
{
this.IsKillAllWps = IsKillAllWps;
this.FilePath = FilePath;
string Extension = Path.GetExtension(FilePath).ToLower();//扩展名 ".aspx"
switch (Extension)
{
case "xls":
Extension = "KET.Application";
break;
case "xlsx":
Extension = "KET.Application";
break;
case "ppt":
Extension = "KWPP.Application";
break;
case "pptx":
Extension = "KWPP.Application";
break;
default:
Extension = "KWps.Application";
break;
}
Type type = Type.GetTypeFromProgID(Extension);
if (type == null)
{
Extension = "wps.Application";
type = Type.GetTypeFromProgID("wps.Application");
}
wps = Activator.CreateInstance(type);
//比较完整的一些
//WPS文字 KWPS.Aplication
//WPS的Excel KET.Application
//WPS的演示文档 KWPP.Application
//Word Word.Application
//Excel Excel.Application
//Powerpoint Powerpoint.Application
}
else
{
throw new Exception("找不到原文件,请检查!");
}
}
/// <summary>
/// 源文件路径
/// </summary>
public string FilePath { get; set; }
/// <summary>
/// 使用wps将Word转PDF
/// </summary>
/// <param name="TargetPath">目标文件路径,不传默认在源文件的所属目录</param>
/// <returns>Pdf文件路径</returns>
public string WordWpsToPdf(string TargetPath = "")
{
if (string.IsNullOrEmpty(FilePath))
{
throw new Exception("请传入文件路径");
}
//如果没传入文件路径就默认使用源目录
if (string.IsNullOrEmpty(TargetPath))
{
TargetPath = Path.ChangeExtension(FilePath, "pdf");
}
try
{
//忽略警告提示
wps.DisplayAlerts = false;
//用wps 打开word不显示界面
dynamic doc = wps.Documents.Open(FilePath, Visible: false);
//保存为Pdf
doc.ExportAsFixedFormat(TargetPath, Word.WdExportFormat.wdExportFormatPDF);
//设置隐藏菜单栏和工具栏
//wps.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
doc.Close();
doc = null;
}
catch (Exception e)
{
throw e;
}
finally
{
Dispose();
}
return TargetPath;
}
/// <summary>
/// 使用wps将xls转PDF
/// </summary>
/// <param name="TargetPath">目标文件路径,不传默认在源文件的所属目录</param>
/// <returns>Pdf文件路径</returns>
public string XlsWpsToPdf(string TargetPath = "")
{
if (string.IsNullOrEmpty(FilePath))
{
throw new Exception("请传入文件路径");
}
//如果没传入文件路径就默认使用源目录
if (string.IsNullOrEmpty(TargetPath))
{
TargetPath = Path.ChangeExtension(FilePath, "pdf");
}
try
{
XlFixedFormatType targetType = XlFixedFormatType.xlTypePDF;
object missing = Type.Missing;
//忽略警告提示
wps.DisplayAlerts = false;
//xls 转pdf
dynamic doc = wps.Application.Workbooks.Open(FilePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
//保存为Pdf
doc.ExportAsFixedFormat(targetType, TargetPath, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
//设置隐藏菜单栏和工具栏
//wps.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
doc.Close();
doc = null;
}
catch (Exception e)
{
throw e;
}
finally
{
Dispose();
}
return TargetPath;
} /// <summary>
/// 使用ppt将xls转PDF
/// </summary>
/// <param name="TargetPath">目标文件路径,不传默认在源文件的所属目录</param>
/// <returns>Pdf文件路径</returns>
public string PptWpsToPdf(string TargetPath = "")
{
if (string.IsNullOrEmpty(FilePath))
{
throw new Exception("请传入文件路径");
}
//如果没传入文件路径就默认使用源目录
if (string.IsNullOrEmpty(TargetPath))
{
TargetPath = Path.ChangeExtension(FilePath, "pdf");
}
try
{
//忽略警告提示
wps.DisplayAlerts = false;
//ppt 转pdf
dynamic doc = wps.Presentations.Open(FilePath, MsoTriState.msoCTrue,
MsoTriState.msoCTrue, MsoTriState.msoCTrue);
object missing = Type.Missing;
//doc.ExportAsFixedFormat(pdfPath, PpFixedFormatType.ppFixedFormatTypePDF,
// PpFixedFormatIntent.ppFixedFormatIntentPrint,
// MsoTriState.msoCTrue, PpPrintHandoutOrder.ppPrintHandoutHorizontalFirst,
// PpPrintOutputType.ppPrintOutputBuildSlides,
// MsoTriState.msoCTrue, null, PpPrintRangeType.ppPrintAll,"",
// false, false, false, false, false, missing);
//保存为Pdf
doc.SaveAs(TargetPath, PowerPoint.PpSaveAsFileType.ppSaveAsPDF, MsoTriState.msoTrue);
//设置隐藏菜单栏和工具栏
//wps.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar);
doc.Close();
doc = null;
}
catch (Exception e)
{
throw e;
}
finally
{
Dispose();
}
return TargetPath;
} /// <summary>
/// 支持释放资源可以使用using
/// </summary>
public void Dispose()
{
if (wps != null)
{
wps.Quit();
//释放掉wps对象
wps = null;
#region 强制关闭所有wps的功能慎用,尤其是带并发的
//强制关闭所有wps进程,解决文件占用的问题
if (this.IsKillAllWps)
{
System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("wps");
foreach (System.Diagnostics.Process prtemp in process)
{
prtemp.Kill();
}
}
#endregion
}
}
}

3、调用代码如下

        /// <summary>
/// 开始转换Pdf
/// </summary>
private void StatButton_Click(object sender, EventArgs e)
{
if (File.Exists(PdfFileTextBox.Text)&& Path.IsPathRooted(PdfFileTextBox.Text))
{
Stopwatch sw = new Stopwatch();
sw.Start();
using (ToPdfHelper Help = new ToPdfHelper(PdfFileTextBox.Text,true))
{
Help.WordWpsToPdf();
}
sw.Stop();
TimeSpan ts2 = sw.Elapsed;
TimeLabel.Text = string.Format("转换使用时间:总共花费{0}ms.", ts2.TotalMilliseconds);
}
else
{
MessageBox.Show("文件不存在,检查文件路径是否正常,只支持绝对路径!");
}
}

C#调用WPS转换文档到PDF的的实现代码。的更多相关文章

  1. LibreOffice转换文档到pdf时中文乱码

    根据我的测试,LibreOffice转换文档到pdf乱码主要有三个方面的原因: 1.centos缺少中文字体 2.jdk缺少中文字体 3.LibreOffice缺少中文字体. 解决该问题需要将wind ...

  2. C#调用WPS将文档转换成pdf进行预览

    引用:https://www.jianshu.com/p/445996126c75 vs启动项目可以生成wps实例 本地iis部署的站点却不行 原因是vs是管理员权限,而iis没有权限 解决方法 启动 ...

  3. Java 调用OPENOFFIC 转换文档类型

    public static void office2PDF(String sourceFile, String destFile) { try { File inputFile = new File( ...

  4. office 文档转pdf

    本地先安装 金山wps,并确保可用 工程目录 1.使用前,先执行install.bat 安装jacob 到maven本地仓库 2.复制 jacob-1.18-M2-x64.dlljacob-1.18- ...

  5. Java 使用 jacob 将 word 文档转换为 pdf 文件

    网上查询了许许多多的博客,说利用 poi.iText.Jsoup.jdoctopdf.使用 jodconverter 来调用 openOffice 的服务来转换等等,我尝试了很多种,但要么显示不完全, ...

  6. java实现MsOffice文档向pdf文档转化

    本篇文档实现功能,将word和ppt文档的文件转化成pdf格式的文档 应用到jacob 第一步:下载压缩包 (1)jacob官网下载jacob压缩包 (2)网址:http://sourceforge. ...

  7. java使用jacob将office文档转换为PDF格式

    jacob 包下载地址: http://sourceforge.net/projects/jacob-project/ 下载后,将jacob 与 jacob-1.19-x64.dll放到安装jdk目录 ...

  8. 使用python调用wps v9转换office文件到pdf

    #!/usr/bin/python2.6 # -*- coding: utf-8 -*- # pip install timeout-decorator import os import win32c ...

  9. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  10. libreoffice转换文档的方法(支持各平台各版本的libreoffice)

    前段时间完成了一个利用libreoffice转换文档进行预览的资源管理系统,用的是jodconvert这个多年未更新的转换项目,由于版本不兼容等原因,导致最新版的libreoffice不能用,浪费了许 ...

随机推荐

  1. Servlet小结

    1.sevlet的生命周期 用户在发送第一次请求的时候Servlet对象被实例化(AServlet的构造方法被执行了.并且执行的是无参数构造方法.) AServlet对象被创建出来之后,Tomcat服 ...

  2. [Python]-json模块-处理字典数据的存取

    import json 函数 json.dumps() json.dumps()函数是将字典转化为字符串 json.loads() json.loads()函数是将字符串转化为字典 注意: 从json ...

  3. flink-cdc同步mysql数据到hbase

    本文首发于我的个人博客网站 等待下一个秋-Flink 什么是CDC? CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的 ...

  4. Windows 客户端802.1x的一些设置

    802.1x作为网络准入的验证,自然有很多好处.但是在实施过程中也遇到了些小问题.我在这里记录下来,希望对大家有帮助,遇到问题的时候能有个参考. 基于用户验证的方式,当用户修改了密码后,验证失败.此时 ...

  5. elementUI中page(分页)的使用方法

    HTML部分 <!-- 快捷键 page-div --> <el-pagination background layout="sizes,prev, pager, next ...

  6. 升级Gogs版本

    今天早上收到阿里云发的报警短信,大致内容如下: 前提分析: 公司代码代码仓库使用是Gogs搭建的,版本是0.11.34,二进制方式安装的,连接的是其他主机上的MySQL数据库,因此被检测到有这个漏洞 ...

  7. 18. Fluentd输出插件:out_stdout用法详解

    stdout即标准输出,out_stdout将收到的日志事件打印到标准输出. 如果Fluentd以daemon方式在后台运行,out_stdout会将事件输出到Fluentd的运行日志中. 这个插件在 ...

  8. Python中list列表的常见操作

    Python的list是一个列表,用方括号包围,不同元素间用逗号分隔. 列表的数据项不需要具有相同的类型.(列表还可以嵌套,即列表中的列表) 每个元素都有一个索引(表示位置),从0开始:可以用索引-1 ...

  9. vulnhub靶场之THE PLANETS: EARTH

    准备: 攻击机:虚拟机kali.本机win10. 靶机:THE PLANETS: EARTH,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnh ...

  10. MatrixOne从入门到实践03——部署MatrixOne

    MatrixOne从入门到实践--部署MatrixOne 前两章节我们简单介绍了MatrixOne和源码编译了MatrixOne.本章节将使用不同的部署方式,来部署MatrixOne的服务. 注意:不 ...