我有这段代码应该打开一个docx文件,我想把它保存为pdf。
不幸的是,没有抛出错误,但PDF没有保存。
有关如何保存它的任何提示?
var wordApplication = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document wordDocument = null;
try
{
wordDocument = wordApplication.Documents.Open(docPath + ".docx");
if (wordDocument != null)
wordDocument.SaveAs2(docPath + ".pdf", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF);
//wordDocument.ExportAsFixedFormat(docPath + ".pdf", Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF);
else throw new Exception("CUSTOM ERROR: Cannot Open Word Application");
}
catch (Exception ex)
{
new Exception("CUSTOM ERROR" + ex.Message);
}
答案 0 :(得分:2)
已经在堆栈this post上详细列出了许多不同的选项。
Word,尤其是Interop,在执行此类操作时尤其痛苦,因为它基于COM的本质意味着它并不总是遵循.NET规则。您可能需要在保存之前先激活()文档,否则可能存在其他问题。您可能希望尝试将文档保存为普通docx,以便隔离问题。也可能是文档中有些内容没有保存,因此首先需要使用基本文档进行测试。
IIS调整位于应用程序池的高级设置中。您需要在特定标识下运行池,然后将“加载用户配置文件”设置为true。我从未使用像这样的Interop,它可能无法正常工作。如果您只是想将word文档转换为pdf,那么有比interop更简单的方法(OpenXML,pdf库等)。是否有理由使用Interop?
编辑:你可能想给DocX一个机会。你可以找到它here看起来这是转换的常见问题。我过去使用Aspose做过这个,但我从来没有在服务器上转换PDF而不能简单地购买最好的组件(并且Aspose并不便宜!)。如果可以的话,我肯定会建议远离Interop,但在阅读该帖后可能需要它。
答案 1 :(得分:1)
服务器2008r2和服务器2012r2和office 2010/2016存在同样的问题
尝试创建一个"桌面" C:\ Windows \ SysWOW64 \ config \ systemprofile
中的文件夹这对我有用
找到关于此
的另一篇文章