You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap-Table导出PDF时印度货币符号不显示如何解决

问题描述

使用bootstrap-table展示数据时,导出PDF后印度货币符号(₹)无法正常显示,示例代码如下:

<table id="table"  data-show-export="true"  data-pagination="false"  data-side-pagination="server"  data-click-to-select="true"  data-toolbar="#toolbar"  data-show-toggle="true"  data-show-columns="true">  
  <thead>    
    <tr>     
      <th scope="col" > No.</th>     
      <th>Item</th>     
      <th>Price</th>    
    </tr>   
  </thead>  
  <tbody>    
    <tr>      
      <td>1</td>      
      <td>Item 0</td>      
      <td>₹100</td>    
    </tr>    
    <tr>      
      <td>2</td>      
      <td>Item 1</td>      
      <td>₹200</td>    
    </tr>    
    <tr>      
      <td>3</td>      
      <td>Item 2</td>      
      <td>₹300</td>    
    </tr>    
    <tr>      
      <td>4</td>      
      <td>Item 3</td>      
      <td>₹400</td>    
    </tr>    
    <tr>      
      <td>5</td>      
      <td>Item 4</td>      
      <td>₹500</td>    
    </tr>    
    <tr>      
      <td>6</td>      
      <td>Item 5</td>      
      <td>₹600</td>    
    </tr>    
    <tr>      
      <td>7</td>      
      <td>Item 6</td>      
      <td>₹8000</td>    
    </tr>  
  </tbody>
</table>
解决方法

bootstrap-table的PDF导出依赖jsPDF库,默认使用的字体不支持Unicode特殊字符(比如₹),需要配置支持Unicode的字体来解决:

1. 准备支持Unicode的字体文件

选择一款支持Unicode的字体(比如Noto Sans、Arial Unicode MS),通过jsPDF的字体转换器将字体文件转换成jsPDF可识别的JS格式,然后在页面中引入该JS文件。

2. 配置bootstrap-table导出参数

可以通过HTML属性或JS初始化两种方式指定PDF导出使用的字体:

方式一:HTML属性配置

在table标签中添加data-export-options属性,指定PDF的字体:

<table id="table" 
       data-show-export="true" 
       data-pagination="false" 
       data-side-pagination="server" 
       data-click-to-select="true" 
       data-toolbar="#toolbar" 
       data-show-toggle="true" 
       data-show-columns="true"
       data-export-options='{"pdf": {"fontName": "NotoSans", "fontSize": 10}}'>

方式二:JS初始化配置

如果是通过JS初始化bootstrap-table,直接在配置中添加exportOptions:

$('#table').bootstrapTable({
  exportOptions: {
    pdf: {
      fontName: 'NotoSans', // 替换为你引入的字体名称
      fontSize: 10
    }
  }
});

3. 全局替换jsPDF默认字体(可选)

如果希望所有PDF导出都使用该字体,可以全局修改jsPDF的默认字体:

// 先添加字体(确保已引入转换后的字体JS文件)
jsPDF.API.addFont('NotoSans-normal.ttf', 'NotoSans', 'normal');
jsPDF.API.addFont('NotoSans-bold.ttf', 'NotoSans', 'bold');

// 设置默认字体
jsPDF.defaults.font = 'NotoSans';

临时替代方案(不推荐)

如果暂时无法处理字体,可以将₹替换为HTML实体&#8377;,但这种方式仅在部分渲染场景有效,优先推荐字体配置方案。

内容的提问来源于stack exchange,提问作者Rupesh Gondariya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:25:39