更新之前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