You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在jsPDF中使用UTF-8及特殊字符(如下标)

jsPDF 实现下标文本(如H₂SO₄)的方法

jsPDF完全支持生成带下标文本的PDF,下面是两种实用的实现方式:

方法1:使用Unicode下标字符

数字的下标对应固定的Unicode字符(比如2对应4对应),可以直接替换文本中的数字为对应下标字符,再用常规的text方法输出:

const doc = new jsPDF();
// 直接写入带Unicode下标的文本
doc.text('H₂SO₄', 10, 10);
doc.save('chemical-formula.pdf');

如果需要批量处理文本中的数字下标,可编写简单的转换函数:

// 普通数字转Unicode下标的映射
const subscriptMap = {
  '0': '₀', '1': '₁', '2': '₂', '3': '₃', '4': '₄',
  '5': '₅', '6': '₆', '7': '₇', '8': '₈', '9': '₉'
};

function convertToSubscript(text) {
  return text.replace(/[0-9]/g, match => subscriptMap[match] || match);
}

// 使用示例
const doc = new jsPDF();
const originalText = 'H2SO4';
const subscriptText = convertToSubscript(originalText);
doc.text(subscriptText, 10, 10);
doc.save('formula.pdf');

方法2:结合HTML的<sub>标签渲染

jsPDF v2.0及以上版本支持html方法,可直接渲染包含<sub>标签的HTML内容,适合处理复杂格式的文本:

const doc = new jsPDF();
const htmlContent = '<p>H<sub>2</sub>SO<sub>4</sub></p>';

doc.html(htmlContent, {
  callback: (doc) => doc.save('html-subscript.pdf'),
  x: 10,
  y: 10
});

注意事项

  • Unicode下标方法兼容性强,无需额外依赖,适合简单的下标需求;
  • HTML渲染方法更灵活,支持多种格式(如上标、粗体等),但需确保使用的jsPDF版本支持html功能。

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

火山引擎 最新活动