0

我有一个非常简单的代码,它使用 Microsoft.Office.Interop.Word 保存 MS Word 文档,它使用 MS Word 和 COM。

Object fileName = docPathDocX;
Object tr = true;
Document document = _application.Documents.Open(ref fileName);
document.SaveAs(FileName: docPathDocXEmbedFonts, EmbedTrueTypeFonts: tr);

我还在 .docx 文档中使用了为所有 Windows 用户安装的自定义 .ttf 字体。当我在 Visual Studio 下运行此代码时,一切正常。我有嵌入自定义字体的 .docx 文档。另一方面,当此代码在 IIS(MVC 应用程序)下运行时,尽管嵌入了其他系统字体,但并未嵌入自定义字体。

我怀疑原因可能是缺少 IIS 用户权限,但我在这方面的努力还没有带来任何结果。

4

1 回答 1

0

Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定的行为和/或在此环境中运行 Office 时出现死锁。

如果您正在构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。

在Office 服务器端自动化的注意事项文章中阅读有关此内容的更多信息。

如果您只处理开放 XML 文档,您可以考虑改用Open XML SDK 2.5 for Office

于 2021-05-07T12:15:28.907 回答