Jspdf 和 jspdf-autotable 中文乱码问题解决

  • 问题描述

    1. 项目中的需求:将页面中部分内容导出为PDF(能复制pdf中文字)

    2. 经过分析,决定采用JsPDF在前端进行 pdf 的导出。为了能够复制PDF中的文字,所以不能采用html2canvas方法,而是采用直接生成的方法。

  • 在使用JsPDF和jspdf-autoTable的过程中,遇到了以下问题:

    1. JsPDF如何直接添加图片的问题

    2. JsPDF 中文显示乱码的问题

    3. Jspdf-autoTable中文显示乱码的问题

JsPDF直接添加图片的问题

  • 针对这个问题,最简单的解决办法就是将待添加的图片转为base64编码,形如:

    data:image/png;base64,iVxxxxxxxxxxx
    

JsPDF和Jspdf-autoTable 中文显示乱码的问题

  • 解决方法如下:
  1. 这里下载一个ttf字体文件,或者自己从别处下载(字体文件越小越好)。
  2. 这里将项目clone下来,打开 fontconverter/fontconverter.html,操作如下图
    在这里插入图片描述
  3. 将生成的 .js 文件引入项目,vue项目中引用如下图:
    在这里插入图片描述
  4. 实例代码如下:
  • 生成的字体js文件
import {
    jsPDF } from "jspdf"
var font = 'AAdfjsklfsl';  # ttf字体文件的base64编码
var callAddFont = function () {
   
	this.addFileToVFS('chs_song-normal.ttf', font)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值