发布到IIS后,Kendoui找不到dejavu字体

时间:2015-07-06 14:35:53

标签: javascript css iis kendo-ui telerik

我试图复制这个example

在我的BundleConfig.cs中:

<!-- language: c# --> 
public static string KendoVersion = "2015.1.429"; 
public static string KendoTheme = "bootstrap"; 
bundles.Add(new StyleBundle("~/Content/kendo/kendoui").Include(
    String.Format("~/Content/kendo/{0}/kendo.common.min.css",KendoVersion),
    String.Format("~/Content/kendo/{0}/kendo.common-{1}.core.min.css", KendoVersion, KendoTheme),
    String.Format("~/Content/kendo/{0}/kendo.common-{1}.min.css", KendoVersion,KendoTheme),
    String.Format("~/Content/kendo/{0}/kendo.{1}.min.css", KendoVersion, KendoTheme)
 ));

我有这个简单的观点:

<div class="pdf">
    Test <strong>Test2</strong>
</div>

<button class="export-pdf k-button" onclick="getPDF('.pdf')">Esporta in PDF</button>

<script type="text/javascript">
    function getPDF(selector) {
        kendo.drawing.drawDOM($(selector)).then(function (group) {
            kendo.drawing.pdf.saveAs(group, "Richiesta.pdf");
        });
    }
</script>

如果我在本地环境中运行我的应用程序,我没有任何问题。但是,如果我发布到IIS,在远程,当我点击“PFD”按钮时,我有这个JavaScript错误:

  

无法从myWebSite.it/TestPdf/Content/kendo/fonts/DejaVu/DejaVuSans.ttf加载字体

文件在服务器中正确显示,正确的路径是: “〜/内容/剑术/的 2015.1.429 /fonts/DejaVu/DejaVuSans.ttf”

如果我复制文件夹“〜/ content / kendo”中的文件夹字体就可以了。

问题

为什么应用程序有这种行为?

我在某处错过了某些配置吗?

1 个答案:

答案 0 :(得分:2)

问题是字体(和图像)是相对于css文件的,所以当它捆绑它时,它正在寻找错误路径中的字体,所以它试图在〜/ Content / kendo / fonts中查找字体,但它们不是'他们在〜/ Content / kendo / 2015.1.429 / fonts

更改您的包以包含版本,以便它可以在正确的路径中找到fonts文件夹,例如

string bundleName = string.Format("~/Content/kendo/{0}/kendoui", KendoVersion);
 bundles.Add(
            new StyleBundle(bundleName).Include(
                String.Format("~/Content/kendo/{0}/kendo.common.min.css", KendoVersion),
                String.Format("~/Content/kendo/{0}/kendo.common-{1}.core.min.css", KendoVersion, KendoTheme),
                String.Format("~/Content/kendo/{0}/kendo.common-{1}.min.css", KendoVersion, KendoTheme),
                String.Format("~/Content/kendo/{0}/kendo.{1}.min.css", KendoVersion, KendoTheme)));
    }

它在调试时有效,因为它可能没有优化它们,因此正在使用正确的路径

这有更多信息http://docs.telerik.com/kendo-ui/aspnet-mvc/fundamentals#css-bundling