更新之前PDF转word遇到的坑 在使用offic系列的转换 在本地测试完全ok,部署到服务器上会出现Could not load file or assembly ‘office, Version=
**更新之前PDF转word遇到的坑 在使用offic系列的转换 在本地测试完全ok,部署到服务器上会出现Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral,等错误。
发布之后 一定要修改服务器应用的权限,否则是调用不了应用的Word或者wps应用的,(引用其他dll)调用其他应用也类型。
**
在我调试的过程中,发现了一种更好的解决办法,就是使用WPS去进行转换,代码如下:` public class WpsWordToPdf : IDisposable
{
dynamic wps;
public WpsWordToPdf()
{
Type type = Type.GetTypeFromProgID("KWps.Application");
wps = Activator.CreateInstance(type);
}
/// <summary>
/// 根据word文件的路径转换为pdf文件,并删除word文件
/// </summary>
/// <param name="wordFileName">Wps文件路径</param>
/// <param name="pdfFileName">Pdf文件路径</param>
/// <returns></returns>
public void ToPdf(string wordFileName, string pdfFileName = null)
{
if (wordFileName == null)
{
throw new ArgumentNullException("wpsFilename");
}
if (pdfFileName == null)
{
pdfFileName = wordFileName.Replace(".docx", ".pdf");
}
dynamic doc = wps.Documents.Open(wordFileName, Visible: false);
//doc 转pdf
doc.ExportAsFixedFormat(pdfFileName, 17);
doc.Close();
wps.Quit();
DeleteFileByPath(wordFileName);
}
public void Dispose()
{
if (wps != null) { wps.Quit(); }
}
/// <summary>
/// 删除根据路径删除文件
/// </summary>
/// <param name="path">文件路径</param>
public static void DeleteFileByPath(string path)
{
FileAttributes attr = File.GetAttributes(path);
if (attr == FileAttributes.Directory)
{
Directory.Delete(path, true);
}
else
{
File.Delete(path);
}
}
}
调用
//word转pdf,并删除word文件
WpsWordToPdf wpsWordToPdf = new WpsWordToPdf();
wpsWordToPdf.ToPdf(reportData.FilePath);
可以全美解决问题
切记修改IIs服务器上的 应用程序池中的自己的应用的标识。下班啦!!!
本文来自博客园,作者:doufei,转载请注明原文链接:https://www.cnblogs.com/lfdou/p/17412933.html
标签:
c#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix