Kendo导出为PDF Unicode支持

时间:2017-07-07 09:07:03

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

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

存储在数据库中的翻译

Chinese translations stored in DB as unicode

通过使用template列属性,没有多长时间让Kendo Grid运行起来以中文显示这些Unicodes:

template: '#= Translation #'

Kendo Grid显示翻译

Grid displaying transformed Unicode in Chinese

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

PDF导出

Current export to PDF with missing translations

CSV导出

Current export to Excel displaying unicode instead of translation

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

  • 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 Grid列的上下文中以不同方式使用kendo.template

Columns displaying kendo template approach

我已经制作了Dojo example来证明PDF导出的问题。

1 个答案:

答案 0 :(得分:0)

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

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

在网格文件中使用此行,如在kendo中,标准PDF字体不支持Unicode字符