前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSharp中调用WPS实现文档转PDF

CSharp中调用WPS实现文档转PDF

作者头像
码客说
发布2023-04-27 15:18:51
1.1K0
发布2023-04-27 15:18:51
举报
文章被收录于专栏:码客码客

调用WPS的DLL

在安装的wps下复制 wpsapi.dllwppapi.dlletapi.dll,这三个文件可以操作wordpowerpointexcel

这里只操作Word,所以只引用wpsapi.dll就行。

注意

wpsapi.dll并不需要生成到打包目录,所以并不用担心这几个DLL比较大,这种方式本质还是使用COM实现的。

点击Word引用,属性-》嵌入互操作类型-》false

生成事件=>生成前事件命令行:

代码语言:javascript
复制
xcopy /Y /d $(ProjectDir)\Libs\Interop.Office.dll $(TargetDir)

添加方法

代码语言:javascript
复制
public static bool ConvertToPdf(string sourcePath, string targetPath)
{
    Word.ApplicationClass app = new Word.ApplicationClass();
    Word.Document doc = null;
    try
    {
        Console.WriteLine($@"正在转换 [{sourcePath}]-> [{targetPath}]");
        doc = app.Documents.Open(sourcePath, Visible: false);
        doc.ExportAsFixedFormat(targetPath, Word.WdExportFormat.wdExportFormatPDF);
        Console.WriteLine($@"转换完成 [{targetPath}]");
    }
    catch (Exception)
    {
        return false;
    }
    finally
    {
        if (doc != null) doc.Close();
        app.Quit();
    }

    return true;
}

调用

代码语言:javascript
复制
Task.Run(
    () =>
    {
        ConvertToPdf(@"D:\Tools\Docs\01.docx", @"D:\Tools\Docs\01.pdf");
    }
);

调用COM接口

代码语言:javascript
复制
using System;
using System.IO;
using Word;

namespace WpsToPdf
{
    class Wps2Pdf : IDisposable
    {
        readonly dynamic _wps;

        public Wps2Pdf()
        {
            Type type = Type.GetTypeFromProgID("KWps.Application");
            _wps = Activator.CreateInstance(type);
        }

        public void ToPdf(string wpsFilename, string pdfFilename = null)
        {
            if (wpsFilename == null)
            {
                throw new ArgumentNullException(@"wpsFilename");
            }

            if (pdfFilename == null)
            {
                pdfFilename = Path.ChangeExtension(wpsFilename, "pdf");
            }

            Console.WriteLine($@"正在转换 [{wpsFilename}]-> [{pdfFilename}]");

            dynamic doc = _wps.Documents.Open(wpsFilename, Visible: false);
            doc.ExportAsFixedFormat(pdfFilename, WdExportFormat.wdExportFormatPDF);
            doc.Close();
            Console.WriteLine($@"转换完成 [{pdfFilename}]");
        }

        public void Dispose()
        {
            if (_wps != null)
            {
                _wps.Quit();
            }
        }
    }
}

调用

代码语言:javascript
复制
Task.Run(
    () =>
    {
        Wps2Pdf wps2Pdf = null;
        try
        {
            wps2Pdf = new Wps2Pdf();
            wps2Pdf.ToPdf(@"D:\Tools\Docs\01.docx", @"D:\Tools\Docs\01.pdf");
        }
        finally
        {
            // 不管转换是否成功都退出WPS
            if (wps2Pdf != null)
            {
                wps2Pdf.Dispose();
            }
        }
    }
)
;

调用EXE

https://github.com/cognidox/OfficeToPDF

这个只支持微软的Office。

下载后执行

代码语言:javascript
复制
OfficeToPDF.exe "D:\Tools\Docs\01.docx" "D:\Tools\Docs\01.pdf"
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 调用WPS的DLL
  • 调用COM接口
  • 调用EXE
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档