0

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

2 回答 2

2

堆栈上的这篇文章已经详细介绍了许多不同的选项。

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

编辑:查看此链接和此链接

IIS 调整位于应用程序池的高级设置中。您需要以特定身份运行池,然后将 Load User Profile 设置为 true。我从来没有像这样使用过互操作,它可能无法正常工作。如果您只是想将 word 文档转换为 pdf,那么还有比互操作(OpenXML、pdf 库等)更简单的方法。您使用 Interop 是有原因的吗?

编辑:您可能想尝试一下 DocX。你可以在这里找到

看起来这是转换的常见问题。我过去曾使用 Aspose 完成此操作,但我从来不必在服务器上转换 PDF 而不能简单地购买最好的组件(而且 Aspose 并不便宜!)。如果可以的话,我当然会建议尽量远离 Interop,但在阅读了那篇文章之后,可能需要它。

于 2012-09-14T14:05:56.327 回答
1

server 2008r2 和现在 server 2012r2 和 office 2010/2016 有同样的问题

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

这对我有用

找到另一篇关于此的文章

office interop 在 Windows 服务中不起作用

于 2017-11-15T16:23:38.967 回答