【问题标题】:Does DataTables support Persian language?DataTables 是否支持波斯语?
【发布时间】:2019-02-26 15:04:31
【问题描述】:

我正在处理波斯数据,当将它们打印为 PDF 时,只有英文数据是正确的,但波斯数据不正确。 有人可以帮忙吗?

图片如下:

【问题讨论】:

  • 不,DT 使用 pdfMake 创建 PDF。如果您想要波斯语,您必须提供自己的字符集并将其与 pdfMake 一起提供 -> github.com/bpampuch/pdfmake/issues/33(或类似线程)
  • 字体有问题,字符集有问题
  • 在评论之前尝试点击链接 :) 这是一个非常常见的问题。 pdfMake 中的默认字体不支持广泛的语言、特殊字符、从右到左等。也许,如果您提供了一些示例代码和您尝试过的内容,有人可以回答,但基本上答案在链接中。

标签: jquery pdf utf-8 datatables


【解决方案1】:

迟到的答案,但已解决。 pdfmake 不支持 RTL 字体,您必须自定义并添加自己的字体。 这是一个例子 on Github

【讨论】:

    【解决方案2】:

    以上回答不准确,不切题,不回答问题。如您所知,可笑的 PdfMake 插件默认使用 Roboto 字体。此字体不支持波斯字符/脚本。要解决此问题,您应该将默认字体更改为所需的波斯语字体。您需要采取的第一个操作是打开“vfs_fonts.js”文件。该文件具有以下结构:

    this.pdfMake = this.pdfMake || {}; this.pdfMake.vfs = {
      "arial.ttf": "AAEAA...MYXRu",
      "another_one.ttf": "XXXX...XXXX"
    };

    每个“AAEAA...MYXRu 字符串,正如@AndrewJames 所解释的那样,是相关字体文件的 base64 编码表示。您需要通过字体的特定字符串来更改这些。 要生成字符串,您应该转到dataurlmaker。就在这时,将 dataurlmaker 生成的(非常长的)字符串粘贴到您的 vfs_fonts.js 文件中。 确保不包含 dataurlmaker 提供的任何序言(“data:application/octet-stream;base64”)。仅包含 base64 字符串本身。

    按照建议使用 dataurl,然后在 pdfmake.js 中更改字体名称并在 vfs_fonts.js 中使用该名称后,字体会更改。但是,仍然存在主要问题,那就是 RTL 的问题。祝你好运。

    【讨论】:

      【解决方案3】:

      首先你应该下载插件:plugin for Persian lang

      然后将此文件上传到你正在工作的目录并发出ajax请求:

      无跨域Ajax请求:

      <script>
      $(document).ready(function() {
          $('#example').dataTable( {
              "language": {
                  "url": "Persian.lang"
              }
          } );
      } );
      </script>
      

      使用跨域 Ajax 请求:

      $(document).ready(function() {
          $('#example').DataTable( {
              "language": {
                  "url": "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Persian.json"
              }
          } );
      } );
      

      【讨论】:

      • 不用下载,DT有CDN,url: 'http://cdn.datatables.net/plug-ins/1.10.19/i18n/Persian.json'
      • 是的,谢谢@davidkonrad。我曾建议下载该文件,因为不允许跨域 Ajax 请求,但使用 JSONP 是可能的。现在我编辑答案。
      • 我认为您必须重新评估该假设 -> jsfiddle.net/0f9Ljfjr/2007 如果服务器支持跨域没有问题,CDN 将需要这样做。除此之外,OP 在生成的 PDF 中要求正确的波斯语,而不是波斯语翻译插件:)
      • 这不是我的意思,这会改变按钮的语言。我要求内容。当我从数据库加载数据时,它带有两种语言(英语和波斯语)。当我制作它的pdf文件时,波斯数据替换为符号,但英文数据是正确的。那该怎么做呢?
      • 您是否尝试查看您的打印软件是否支持该语言?也许你应该改变字符集。
      【解决方案4】:

      请参考数据表文档https://datatables.net/plug-ins/i18n/

      我没有对此进行测试,但我认为这应该可以。

      $('#example').dataTable( {
                  "language": {
                      "url": "dataTables.german.lang"
                  }
              } );
      

      【讨论】:

      • 这不是我的意思,这会改变按钮的语言。我要求内容。当我从数据库加载数据时,它带有两种语言(英语和波斯语)。当我制作它的pdf文件时,波斯数据替换为符号,但英文数据是正确的。那该怎么做呢?
      猜你喜欢
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多