【发布时间】:2019-01-10 12:02:30
【问题描述】:
我有一个 .Net Core MVC 应用程序,它使用包含 libwkhtmltox.dll 的 DinkToPdf 从 HTML 创建 PDF 文件。我使用的字体之一是 .woff 字体,这在我的本地机器上运行良好。但是在 Azure 中,不应用该字体。
我已经阅读了其他线程,指出应该将 mimeTypes 添加到 .Net Core 的 FileExtensionContentTypeProvider 中,而不是 .Net 应用程序中的 web.config。
var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".woff"] = "font/woff";
provider.Mappings[".ttf"] = "font/ttf";
provider.Mappings[".otf"] = "font/otf";
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "fonts")),
RequestPath = "/fonts",
ContentTypeProvider = provider
});
我也尝试过不同的 mimeType,但相信这些都是正确的。您可以看到我还添加了 .ttf 和 .otf 以查看 Azure 是否存在其中一个问题而不是另一个问题。然后我在 css 中引用字体,如下所示...
@font-face {
font-family: 'barcode';
src: url(../fonts/fre3of9x.woff) format('woff'), url(../fonts/fre3of9x.ttf) format('ttf'), url(../fonts/CODE39.otf) format('otf');
font-weight: normal;
font-style: normal; }
我在 Azure 中看不到任何我可以设置的东西,所以我碰壁了。有人可以帮忙吗?
【问题讨论】:
-
我不知道这是否能解决您的问题,但请尝试右键单击解决方案资源管理器中的 woff 文件 -> 属性 -> 复制到输出目录,设置为“始终复制”。 azure 中可能缺少该文件。您是如何部署应用的?
-
我可以在 wwwroot 文件夹下的字体文件夹下看到 azure 中的文件。部署会自动包含我相信的这个目录中的所有内容。
-
Azure 上的路径是否不正确?在你的 CSS 中你有
../fonts/,尝试不使用../ -
是的,然后它甚至不显示文本。