jspdf生成pdf时 中文乱码
时间: 2023-07-06 15:37:23 浏览: 130
在使用jspdf生成pdf时,中文乱码的问题通常是因为jspdf默认字体是Helvetica,而该字体不支持中文字符。解决方法如下:
1. 引入支持中文字符的字体库,如:`STSongStd-Light`、`SimSun`、`SimHei`等。可以从网络上下载相应的字体库,然后将字体文件放到项目中。
2. 在jspdf中设置中文字体,如下所示:
```js
var doc = new jsPDF();
doc.addFont('path/to/font/file.ttf', 'fontName', 'normal');
doc.setFont('fontName');
doc.text('中文', 10, 10);
```
其中,`addFont()`方法用于添加字体文件,`setFont()`方法用于设置字体,`text()`方法用于输出文本。
3. 如果使用了html2canvas将html转成canvas,再使用jspdf将canvas转成pdf,可以在html2canvas的配置中设置中文字体,如下所示:
```js
html2canvas(document.body, {
useCORS: true,
scale: 2,
logging: true,
letterRendering: 1,
allowTaint: false,
foreignObjectRendering: true,
async: false,
fonts: [
{
family: 'fontName',
src: 'url(path/to/font/file.ttf)'
}
]
}).then(function(canvas) {
var imgData = canvas.toDataURL('image/png');
var doc = new jsPDF();
doc.addImage(imgData, 'PNG', 0, 0, 210, 297);
doc.save('test.pdf');
});
```
其中,`fonts`属性用于设置字体,`family`属性用于设置字体名称,`src`属性用于设置字体文件路径。
通过以上步骤,即可解决jspdf生成pdf时中文乱码的问题。