剑道导出到 PDF Unicode 支持

San*_*man 5 javascript unicode export kendo-ui kendo-grid

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

存储在数据库中的翻译

以 unicode 形式存储在数据库中的中文翻译


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

template: '#= Translation #'
Run Code Online (Sandbox Code Playgroud)

剑道网格显示翻译

网格以中文显示转换后的 Unicode


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

PDF 导出

当前导出为缺少翻译的 PDF

CSV 导出

当前导出到 Excel 显示 unicode 而不是翻译


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

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

    .k-widget {
        font-family: 'Arial Unicode MS';
    }
    
    Run Code Online (Sandbox Code Playgroud)


  • 使用kendo.template

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

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

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

显示剑道模板方法的列

我制作了一个Dojo 示例来演示 PDF 导出的问题。

bik*_*ilz 0

我从未遇到过 Unicode 问题,不过,我知道一个可能对您有帮助的解决方案。

.k-grid {
        font-family: "DejaVu Sans", "Arial", sans-serif;
    }
Run Code Online (Sandbox Code Playgroud)

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