我们正在使用MigraDoc / PDFsharp GDI +,它依赖于在系统中安装字体以进行渲染。我们已经尝试嵌入字体,但MigraDoc的GDI +版本似乎不支持这个。
尝试将此组件移动到Azure App Service时,无法找到字体。有没有办法将字体本地“安装”到App Service,以便它们对GDI可见?
答案 0 :(得分:2)
MigraDoc使用PDFsharp生成PDF文件,PDFsharp可以使用嵌入资源中的字体或应用程序读取的文件。
我会使用PDFsharp / MigraDoc 1.50或更高版本的WPF版本并使用IFontResolver接口。
如果符合您的需要,您可以使用通用的EZFontResolver实现:
http://forum.pdfsharp.net/viewtopic.php?f=8&t=3244
答案 1 :(得分:1)
您可以在App Service上使用Windows容器来安装自定义字体。方法如下:
有关在App Service上使用Windows容器的入门:
https://docs.microsoft.com/en-us/azure/app-service/app-service-web-get-started-windows-container
答案 2 :(得分:0)
据我所知,依赖GDI API的组件可能无法在Azure Web APP上运行。我们可以在https://social.msdn.microsoft.com/Forums/en-US/6ed5c738-390a-4ca7-81d0-370124a4fc88/azure-websites-faq?forum=windowsazurewebsitespreview找到这个已知问题。目前,请尝试使用Azure Web角色或Azure VM。另请在Azure反馈论坛上投票this idea。
答案 3 :(得分:0)
有点晚了-但总比没有好!
我发现这实际上很简单-我们都知道!
将 web.config 添加到应用程序服务的 WWWROOT 添加以下
除非您需要CORS,否则可能不需要
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<staticContent>
<mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
<mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
</staticContent>
</system.webServer>
</configuration>