C# 如果Interop.Word在IIS下运行,则保存后自定义字体不会嵌入结果DOCX文件中

C# 如果Interop.Word在IIS下运行,则保存后自定义字体不会嵌入结果DOCX文件中,c#,asp.net-mvc-4,iis,ms-word,word-interop,C#,Asp.net Mvc 4,Iis,Ms Word,Word Interop,我有一个非常简单的代码,它使用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

我有一个非常简单的代码,它使用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字体。 当我在VisualStudio下运行这段代码时,所有的工作都非常完美。我有嵌入自定义字体的.docx文档。另一方面,当此代码在IIS(MVC应用程序)下运行时,尽管嵌入了其他系统字体,但不会嵌入自定义字体

我怀疑原因可能是缺乏IIS用户权限,但我在这方面的努力尚未取得任何成果

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

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

在文章中阅读更多关于这方面的内容


如果您只处理开放的XML文档,您可以考虑使用Addio.

谢谢。但是,正如我所知,OpenXML不支持用嵌入字体保存。您也可以考虑使用为服务器端执行设计的任何第三方组件。