我就像一个哑巴一样
今天分享一下完美解决 jsPDF 生成 PDF 出现乱码的问题, 包括文本, 表格表头已经表格内部出现乱码的问题~
首先老规矩把代码 clone 下来
Git clone https://github.com/MrRio/jsPDF.git
然后打开文件根目录会看到一个 fontconverter 的文件夹
打开里面的 html 文件, 然后把选择你的本地文件, 填上 name 最好要填中文! 然后会生成一个 JS 文件, 然后你需要把这个 JS 文件复制到你前端文件的 static 静态资源目录下, 并且在页面上引用.
TIP: 最好按照我下图的顺序引入, 不然又可能会出现问题~
然后你只需要
doc.setFont('msyh')
其实这个时候 PDF 内部的文本和表格内的中文都应该会正常显示了, 但是表头还是出现了乱码,
因此我就去翻了下 jspdf-autotable 的 JS 源码, 代码如下
其实重点就是图中标红的地方, 当你选择 table 的主题为 grid 的时候, 它默认 header 那里的 fontStyle 是 bold, 如果你把这里改成 normal 然后再重新生成 PDF 就会发现中文也正常了~
问题就这样迎刃而解了~ 心情大好有木有!
来源: https://juejin.im/post/5c1bb46a5188252dcb310f9f