asp.net core调用wps实现word转pdf的方法
1,首先安装wps,从官网下载安装包
2,创建.net core控制项目
添加com引用,搜索wps
准备一个word文档,名字叫001.docx,随便编写一些文字内容
3,word转pdf
编写代码
namespace WPSStu01
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("转化开始");
var inputFile = "001.docx";
var outputFile = "001.pdf";
WordExportAsPdf(inputFile, outputFile);
Console.WriteLine("转化成功");
Console.ReadKey();
}
/// <summary>
/// 转换为pdf文件,适合(.doc、.docx、.mht、.htm文件类型)
/// </summary>
/// <param name="fileName"></param>
/// <param name="outputFileName"></param>
/// <returns></returns>
public static string WordExportAsPdf(string fileName, string outputFileName)
{
string isSucceed = "OK";
Word.WdExportFormat fileFormat = Word.WdExportFormat.wdExportFormatPDF;
Word.Application wordApp = null;
if (wordApp == null) wordApp = new Word.Application();
Word._Document wordDoc = null;
try
{
wordDoc = wordApp.Documents.Open(fileName, false, true);
wordDoc.ExportAsFixedFormat(outputFileName, fileFormat);
}
catch (Exception ex)
{
isSucceed = ex.Message;
}
finally
{
if (wordDoc != null)
{
wordDoc.Close(false);
wordDoc = null;
}
if (wordApp != null)
{
wordApp.Quit(false);
wordApp = null;
}
}
return isSucceed;
}
}
}
如果启动项目报错
要选择一下32位程序
如果发现还是不行,最后换成.net framework 4.8的控制台项目
添加dll的引用,dll需要去安装的wps里面查找
Console.WriteLine("转化开始");
var exePath = System.AppDomain.CurrentDomain.BaseDirectory;
var inputFile = Path.Combine(exePath, "001.docx");
var outputFile = Path.Combine(exePath, "001.pdf");
WordExportAsPdf(inputFile, outputFile);
Console.WriteLine("转化成功");
Console.ReadKey();
asp.net core也可以问题根本原因是路径的问题,不能些相对路径,必须绝对路径
4,excel转pdf
/// <summary>
/// Excel转换为pdf文件
/// </summary>
/// <param name="fileName"></param>
/// <param name="outputFileName"></param>
/// <returns></returns>
public static string ExcelExportAsPdf(string fileName, string outputFileName)
{
string isSucceed = "OK";
Excel.Application excelApp = null;
if (excelApp == null)
excelApp = new Excel.Application();
Excel.Workbook workBook = null;
try
{
workBook = excelApp.Workbooks.Open(fileName, false, true);
workBook.ExportAsFixedFormat(Excel.XlFixedFormatType.xlTypePDF,outputFileName);
}
catch (Exception ex)
{
isSucceed = ex.Message;
}
finally
{
if (workBook != null)
{
workBook.Close(false);
workBook = null;
}
if (excelApp != null)
{
excelApp.Quit();
excelApp = null;
}
}
return isSucceed;
}
调用
Console.WriteLine("转化开始");
var exePath = System.AppDomain.CurrentDomain.BaseDirectory;
var inputFile = Path.Combine(exePath, "002.xls");
var outputFile = Path.Combine(exePath, "002.pdf");
ExcelExportAsPdf(inputFile, outputFile);
Console.WriteLine("转化成功");
Console.ReadKey();
ppt转pdf
/// <summary>
/// PPT转换为pdf文件
/// </summary>
/// <param name="fileName"></param>
/// <param name="outputFileName"></param>
/// <returns></returns>
public static string PptExportAsPdf(string fileName, string outputFileName)
{
string isSucceed = "OK";
PowerPoint.Application pptApp = null;
if (pptApp == null)
pptApp = new PowerPoint.Application();
PowerPoint.Presentation presentation = null;
try
{
presentation = pptApp.Presentations.Open(fileName);
presentation.ExportAsFixedFormat(outputFileName,PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF);
}
catch (Exception ex)
{
isSucceed = ex.Message;
}
finally
{
if (pptApp != null)
{
presentation.Close();
pptApp = null;
}
if (pptApp != null)
{
pptApp.Quit();
pptApp = null;
}
}
return isSucceed;
}
调用
Console.WriteLine("转化开始");
var exePath = System.AppDomain.CurrentDomain.BaseDirectory;
var inputFile = Path.Combine(exePath, "003.pptx");
var outputFile = Path.Combine(exePath, "003.pdf");
PptExportAsPdf(inputFile, outputFile);
Console.WriteLine("转化成功");
Console.ReadKey();