PDF导出时中文显示乱码怎么办? Air-文茹 提问于 2026-03-31 12:37:10 阅读 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圆圆 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 加载更多 相关推荐 1 回答 44 浏览 PDF预览组件在移动端显示空白怎么办? 我在项目里用了一个PDF预览组件,PC上正常,但一到手机浏览器就整个区域变空白,控制台也没报错。试过用iframe和embed都一样,是不是移动端不支持直接渲染PDF啊? 这是我现在用的代码: <... 程序猿心霞 组件 2026-03-23 06:28:18 2 回答 39 浏览 为什么用Vue导出Excel时,表格中文显示乱码? 用Element UI的export方法导出Excel,中文单元格全显示乱码,已经设置了responseType和charset还是没用... 代码是这样的:<el-table :data="t... 迷人的梓希 交互 2026-02-12 13:53:25 1 回答 29 浏览 前端导出CSV时中文乱码怎么办? 我在用 JavaScript 做 CSV 导出功能,数据里有中文,但下载后用 Excel 打开全是乱码。试过加 BOM 头,但好像没生效? 目前是这样生成的: const csvContent = "... 司马志欣 交互 2026-03-16 19:37:18 2 回答 36 浏览 导出CSV时中文乱码怎么办? 我在用前端导出表格数据为CSV文件,英文和数字都没问题,但一有中文就变成乱码了。我试过用encodeURI包裹内容,也加了BOM头,但下载的文件在Excel里打开还是显示一堆问号或者乱码字符。 这是我... 爱学习的诗雅 交互 2026-03-14 15:22:19 2 回答 385 浏览 React里用xlsx导出Excel时中文乱码怎么办? 我在React项目里用xlsx库导出表格数据,英文和数字都正常,但中文全是乱码,试了网上说的encodeURI也不行,到底该怎么处理? 我现在的代码是这样: import * as XLSX from... Mr-雨萓 交互 2026-03-09 08:55:20 2 回答 767 浏览 前端导出Excel时中文乱码怎么办? 我用Blob和URL.createObjectURL做Excel导出,但下载的文件里中文全是乱码,英文正常。试过加charset=utf-8也不行,是不是编码方式不对? 这是我的导出按钮和触发代码: ... 端木楚萓 交互 2026-02-25 11:44:19 2 回答 27 浏览 React中动态切换PDF预览时页面滚动位置会重置怎么办? 在用react-pdf做动态PDF预览时遇到个怪问题:Viewer组件切换不同PDF文件后,页面总会强制跳到顶部。我试过用useState保存scrollTop值,但组件重新渲染后还是无效... 具体... a'ゞ怡博 组件 2026-02-16 23:54:30 2 回答 25 浏览 CSV导出中文乱码怎么解决? 我用JavaScript把表格数据导出成CSV文件,英文正常,但中文全是乱码,试过加BOM头还是不行。 现在导出的代码是这样的: const csvContent = "data:text/csv;c... 百里振巧 交互 2026-02-24 22:20:20 2 回答 36 浏览 字体子集化后中文显示成方块怎么办? 我用 fontmin 做了字体子集,结果页面上的中文全变成方块了,是不是哪里配置错了? 项目是 React 的,我只保留了英文和几个常用中文字符,但实际渲染时连英文也出问题了。试过把字体文件换成 wo... UX-怡博 优化 2026-03-13 10:31:20 1 回答 49 浏览 Figma导出的SVG在网页中显示不一致怎么办? 我从Figma导出SVG图标后,放到项目里发现颜色和间距跟设计稿对不上,明明在Figma里看起来没问题。试过直接复制SVG代码和下载文件两种方式,结果都一样。 比如这个按钮的样式,Figma里是纯黑#... 诸葛艳平 工具 2026-03-03 21:40:20
setFont方法方向是对的,但具体实现有讲究。首先得准备一个中文字体文件,可以是 ttf 格式。然后通过 addFileToVFS 方法加载字体。官方文档里这个流程写得挺清楚。
这是个标准写法供参考:
记得把 NotoSansSC-Regular.ttf 替换为你实际使用的字体文件名,fontData 得先读取成字符串形式。这过程确实有点麻烦,但为了正确显示也没办法。
对了,字体文件要完整加载完再调用 addFont,不然还是会乱码,别问我怎么知道的...