Word Interop不保存文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Word 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);
}
答案

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

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

编辑:看到这个link和这个link

IIS调整是在应用程序池的高级设置中。您需要在特定标识下运行池,然后将“加载用户配置文件”设置为true。我从未使用像这样的Interop,它可能无法正常工作。如果您只是想将word文档转换为pdf,那么有比interop更简单的方法(OpenXML,pdf库等)。是否有理由使用Interop?

编辑:你可能想给DocX一个机会。你可以找到它here

看起来这是转换的常见问题。我过去使用Aspose做过这个,但我从来没有在服务器上转换PDF而不能简单地购买最好的组件(并且Aspose并不便宜!)。如果可以,我肯定会建议远离Interop,但在阅读该帖后可能需要它。

另一答案

与服务器2008r2和现在的服务器2012r2和Office 2010/2016有同样的问题

尝试在C: Windows SysWOW64 config systemprofile中创建“桌面”文件夹

这对我有用

找到另一篇关于此的文章

office interop does not work in windows service

以上是关于Word Interop不保存文件的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Word Interop:COMException

C# Microsoft.Office.Interop.Word怎么获取页数和字数?

Microsoft.Office.Interop.Word - Word 在尝试打开文件时遇到错误

转换Word文档为PDF文件

Interop Word 处理注意

Interop.Word Documents.Open is null