Kendo 导出到 PDF Unicode 支持

Posted

技术标签:

【中文标题】Kendo 导出到 PDF Unicode 支持【英文标题】:Kendo Export To PDF Unicode Support 【发布时间】: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 导出的问题。

【问题讨论】:

你能解决它吗? 【参考方案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 值时它不起作用。

以上是关于Kendo 导出到 PDF Unicode 支持的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI:在导出到 excel 和 pdf 期间操作网格列

Kendo UI for jQuery数据管理使用教程:PDF导出

剑道图表导出为 pdf 或 png

如何在Android中使用unicode支持创建PDF

可以导出多个kendo网格以实现角度优势

Chrome 103支持使用本地字体,纯前端导出PDF优化