调用WPS的DLL
在安装的wps下复制 wpsapi.dll
,wppapi.dll
,etapi.dll
,这三个文件可以操作word
,powerpoint
,excel
;
这里只操作Word,所以只引用wpsapi.dll
就行。
注意
wpsapi.dll并不需要生成到打包目录,所以并不用担心这几个DLL比较大,这种方式本质还是使用COM实现的。
点击Word引用,属性-》嵌入互操作类型-》false;
生成事件=>生成前事件命令行:
代码语言:javascript复制xcopy /Y /d $(ProjectDir)LibsInterop.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:ToolsDocs 1.docx", @"D:ToolsDocs 1.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:ToolsDocs 1.docx", @"D:ToolsDocs 1.pdf");
}
finally
{
// 不管转换是否成功都退出WPS
if (wps2Pdf != null)
{
wps2Pdf.Dispose();
}
}
}
)
;
调用EXE
https://github.com/cognidox/OfficeToPDF
这个只支持微软的Office。
下载后执行
代码语言:javascript复制OfficeToPDF.exe "D:ToolsDocs 1.docx" "D:ToolsDocs 1.pdf"