Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Word互操作不保存文件_C#_Asp.net_Com_Office Interop - Fatal编程技术网

C# Word互操作不保存文件

C# Word互操作不保存文件,c#,asp.net,com,office-interop,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.Ope

我有这段代码可以打开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);
}

堆栈上已经有许多不同的选项

Word,尤其是Interop,在这样做时特别痛苦,因为它基于COM的特性意味着它并不总是按照.NET规则运行。保存前可能需要先激活()文档,否则可能会出现其他问题。您可能希望尝试将文档保存为普通docx,以隔离问题。也可能是文档中存在未保存的内容,因此值得先使用基本文档进行测试

编辑:查看此和此

IIS调整位于应用程序池的高级设置中。您需要在特定标识下运行池,然后将Load User Profile设置为true。我从未使用过这样的互操作,它可能不起作用。如果您只是尝试将word文档转换为pdf,那么有比interop(OpenXML、pdf库等)更简单的方法。您使用互操作有什么原因吗

编辑:您可能想试试DocX。你可以找到它


这似乎是转换中的常见问题。我以前使用Aspose做过这件事,但我从来没有在服务器上转换PDF文件,而不能简单地购买最好的组件(而且Aspose并不便宜!)。如果可以的话,我当然会建议您尽量远离Interop,但在阅读了这篇文章之后,可能需要它。

在stack上已经详细介绍了许多不同的选项

Word,尤其是Interop,在这样做时特别痛苦,因为它基于COM的特性意味着它并不总是按照.NET规则运行。保存前可能需要先激活()文档,否则可能会出现其他问题。您可能希望尝试将文档保存为普通docx,以隔离问题。也可能是文档中存在未保存的内容,因此值得先使用基本文档进行测试

编辑:查看此和此

IIS调整位于应用程序池的高级设置中。您需要在特定标识下运行池,然后将Load User Profile设置为true。我从未使用过这样的互操作,它可能不起作用。如果您只是尝试将word文档转换为pdf,那么有比interop(OpenXML、pdf库等)更简单的方法。您使用互操作有什么原因吗

编辑:您可能想试试DocX。你可以找到它


这似乎是转换中的常见问题。我以前使用Aspose做过这件事,但我从来没有在服务器上转换PDF文件,而不能简单地购买最好的组件(而且Aspose并不便宜!)。如果可以的话,我当然会建议您尽量远离Interop,但在阅读了这篇文章之后,可能需要这样做。

服务器2008r2和服务器2012r2以及office 2010/2016也有同样的问题

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

这是我的工作

找到另一篇关于此的文章


服务器2008r2与服务器2012r2和office 2010/2016存在相同的问题

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

这是我的工作

找到另一篇关于此的文章


我试试看。如果从Visual Studio 2010启动应用程序时使用的是相同的代码,但从IIS中发布的web应用程序启动时失败,则可能会有所帮助?问题是在IIS上运行它。要使互操作正常工作,我认为可能需要安装Word(可能还需要打开Word)才能正常工作。它在您的开发机器上本地工作,因为它在用户配置文件中运行,实际上是在后台打开Word。服务器上没有配置文件(您可以将其设置为在IIS中使用配置文件),Word无法打开。如果您登录到服务器并以服务器用户身份运行它,您可能会发现它可以工作。可能还需要server.MapPath docPath“在服务器上没有配置文件(尽管您可以将其设置为在IIS中使用配置文件)”,您能详细说明一下吗?我如何设置在IIS中使用它?我只是想找到一个免费的解决方案,将docx转换成PDF。免费,Docx到PDF是基本规则。真的不能改变他们,我试试看。如果从Visual Studio 2010启动应用程序时使用的是相同的代码,但从IIS中发布的web应用程序启动时失败,则可能会有所帮助?问题是在IIS上运行它。要使互操作正常工作,我认为可能需要安装Word(可能还需要打开Word)才能正常工作。它在您的开发机器上本地工作,因为它在用户配置文件中运行,实际上是在后台打开Word。服务器上没有配置文件(您可以将其设置为在IIS中使用配置文件),Word无法打开。如果您登录到服务器并以服务器用户身份运行它,您可能会发现它可以工作。可能还需要server.MapPath docPath“在服务器上没有配置文件(尽管您可以将其设置为在IIS中使用配置文件)”,您能详细说明一下吗?我如何设置在IIS中使用它?我只是想找到一个免费的解决方案,将docx转换成PDF。免费,Docx到PDF是基本规则。无法真正更改它们从ASP.NET或其他服务器技术使用Office互操作是一个可怕的想法。这些API是为在桌面应用程序中使用而编写的,用于自动化Office(一套桌面应用程序)。服务器应用程序在许多方面都不同,因此在其中使用Office互操作是一个非常非常糟糕的主意。它也不受Microsoft支持,可能会违反您的Office许可证。请看,从ASP.NET或其他服务器技术使用Office互操作是一个可怕的想法。这些API是为在桌面应用程序中使用而编写的,用于自动化Office(一套桌面应用程序)。服务器应用程序在许多方面都不同