【问题标题】:Kendo Export To PDF Unicode SupportKendo 导出到 PDF Unicode 支持
【发布时间】:2017-12-11 12:26:30
【问题描述】:

我一直在尝试将语言动态地合并到 Kendo 控件中,但遇到了中文翻译问题,这些中文翻译存储为 Sql Server 数据库中的 Unicode 列表。

存储在数据库中的翻译


通过使用列 template 属性,很快就启动并运行了 Kendo Grid 以将这些 Unicode 显示为中文:

template: '#= Translation #'

剑道网格显示翻译


我遇到的问题与 Excel/PDF 导出有关。它们不呈现 Unicode 值,就像 Kendo Grid 通过使用 template 所做的一样。相反,它们显示默认字体字符:

PDF 导出

CSV 导出


我在研究该问题后尝试了以下解决方案,但无济于事:

  • this recommendation之后设置网格控件的字体系列; (为了与网站的其他部分保持一致,我不想这样做,也不明白为什么这会起作用,因为实际的 Kendo Grid 本身可以完美地显示汉字):

    .k-widget {
        font-family: 'Arial Unicode MS';
    }
    

  • 将列encoded属性设置为true:

    { field: "AnalyteName", title: "Analyte", attributes: { "class": "customKendoGridCell"}, width: "25%", encoded: true, template: '#= TranslationField #' },
    

  • 使用kendo.template

    如果您想在模板中呈现编码的 HTML 值,Kendo UI 模板可以自动处理编码。

    template: '#=setFieldName(TranslationField)#'
    
    function setFieldName(TranslationField) {
        return kendo.template("<div id='box'>#: TranslationField #</div>");
    }
    

这似乎显示了整个函数而不仅仅是字段,也许kendo.template 需要在 Kendo Grid 列的上下文中以不同的方式使用?

我已发送Dojo example 来演示 PDF 导出的问题。

【问题讨论】:

  • 你能解决它吗?

标签: javascript unicode kendo-ui export kendo-grid


【解决方案1】:

我从来没有遇到过 Unicode 的问题,不过,我知道一个可以帮助你的解决方案。

.k-grid {
        font-family: "DejaVu Sans", "Arial", sans-serif;
    }

在您的网格文件中使用这一行,就像在剑道中一样,标准的 PDF 字体不支持 Unicode 字符

【讨论】:

  • 没用,根据问题,我已经尝试设置 font-family 属性并且不想修改字体,因为它破坏了与网站其他部分的一致性。不过感谢您的意见。
  • 我认为您至少必须为特定页面执行此操作。访问此示例并单击编辑,阅读 kendo 的注释。 demos.telerik.com/kendo-ui/grid/pdf-export@Sandman
  • 是的,请检查我在原始问题中的 Dojo 示例(根据您刚刚发送的示例进行了修改) - 使用 unicode 值时它不起作用。