Word Interop不保存文件

时间:2012-09-14 14:00:19

标签: c# asp.net com office-interop

我有这段代码应该打开一个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);
}

2 个答案:

答案 0 :(得分:2)

已经在堆栈this post上详细列出了许多不同的选项。

Word,尤其是Interop,在执行此类操作时尤其痛苦,因为它基于COM的本质意味着它并不总是遵循.NET规则。您可能需要在保存之前先激活()文档,否则可能存在其他问题。您可能希望尝试将文档保存为普通docx,以便隔离问题。也可能是文档中有些内容没有保存,因此首先需要使用基本文档进行测试。

编辑:请参阅此link和此link

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

中的文件夹

这对我有用

找到关于此

的另一篇文章

office interop does not work in windows service