You need to enable JavaScript to run this app. Angular中使用jsPDF生成PDF时孟加拉语字体无法显示如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Angular中使用jsPDF生成PDF时孟加拉语字体无法显示如何解决

Angular项目jsPDF孟加拉语字体无法显示解决方案

jsPDF默认内置的字体仅支持拉丁字符集,不包含孟加拉语等非拉丁文字的字符映射,因此默认状态下仅英文字符可正常渲染,可通过导入自定义孟加拉语字体解决该问题,具体操作步骤如下:

  • 步骤1:准备支持孟加拉语的TTF格式字体文件,可选用Kalpurush、思源黑体孟加拉语版等支持完整孟加拉语字符集的字体。
  • 步骤2:将TTF字体文件转换为Base64格式,可通过本地Node.js脚本完成转换,参考代码:
const fs = require('fs');
// 替换为你的本地字体文件路径
const fontFile = fs.readFileSync('./kalpurush.ttf');
const fontBase64 = fontFile.toString('base64');
// 输出的字符串即可用于jsPDF注册
console.log(fontBase64);
  • 步骤3:在Angular业务代码中注册并使用自定义字体,参考代码:
import jsPDF from 'jspdf';

// 生成PDF逻辑
const generatePdf = () => {
  const doc = new jsPDF();
  // 注册字体:参数依次为字体Base64、自定义字体名、字重、编码
  doc.addFont('你生成的字体Base64字符串', 'BanglaFont', 'normal', 'Identity-H');
  // 切换为自定义孟加拉语字体
  doc.setFont('BanglaFont');
  doc.setFontSize(14);
  // 写入孟加拉语文本
  doc.text('বাংলা টেক্সট পরীক্ষা', 10, 20);
  // 导出PDF
  doc.save('bangla-output.pdf');
}

注意事项

  • 必须将addFont的第四个参数指定为Identity-H,该编码支持Unicode字符集,是渲染非拉丁文字的必要配置
  • 若需要使用粗体、斜体等不同字重,需分别导入对应字重的TTF文件完成注册
  • 可对TTF字体做子集化处理,仅保留项目需要用到的字符,避免打包后体积过大

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 15:24:04