PDF导出时中文显示乱码怎么办?

Air-文茹 阅读 3

我用 jsPDF 把网页内容转成 PDF,英文正常,但中文全变成方块或乱码了。试过网上说的 addFont 方法,但还是不行,是不是字体没加载对?

这是我的简化代码:

const { jsPDF } = window.jspdf;
const doc = new jsPDF();
doc.setFont('PingFangSC-Regular', 'normal');
doc.text('你好世界', 20, 20);
doc.save('test.pdf');
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
Zz圆圆
Zz圆圆 Lv1
jsPDF 默认不支持中文字符,需要加载中文字体。你用的 setFont 方法方向是对的,但具体实现有讲究。

首先得准备一个中文字体文件,可以是 ttf 格式。然后通过 addFileToVFS 方法加载字体。官方文档里这个流程写得挺清楚。

这是个标准写法供参考:
const { jsPDF } = window.jspdf;
const doc = new jsPDF();
doc.addFileToVFS('NotoSansSC-Regular.ttf', fontData); // fontData 是你的字体内容
doc.addFont('NotoSansSC-Regular.ttf', 'NotoSansSC', 'normal');
doc.setFont('NotoSansSC');
doc.text('你好世界', 20, 20);
doc.save('test.pdf');


记得把 NotoSansSC-Regular.ttf 替换为你实际使用的字体文件名,fontData 得先读取成字符串形式。这过程确实有点麻烦,但为了正确显示也没办法。

对了,字体文件要完整加载完再调用 addFont,不然还是会乱码,别问我怎么知道的...
点赞
2026-03-31 13:03