jsPDF is not defined报错 PHP动态发票页面导出PDF功能异常求助
PDF导出功能故障修复方案
1. jsPDF is not defined 报错修复
- 确认依赖安装与引入配置
若使用包管理器安装,需先执行npm install jspdf,并在调用方法的文件顶部添加引入语句:import { jsPDF } from "jspdf",注意大小写必须与导出名称完全一致。
若使用CDN引入,需将CDN标签放在业务脚本之前加载,不要添加async/defer属性避免加载顺序异常。 - 排查作用域问题
若generatePDF方法封装在闭包、组件等独立作用域内,确认jsPDF实例被挂载到方法可访问的作用域下,不要在局部作用域引入后跨作用域调用。 - 检查打包工具配置
确认webpack、vite等打包工具没有配置external规则排除jspdf,也没有配置错误的别名导致依赖解析失败。
2. DOMPDF导出乱码修复
多语言场景下乱码基本由字体不兼容导致,按以下步骤排查:
- 替换默认字体
DOMPDF自带的Helvetica字体仅支持西欧字符,需自行引入支持全语言的字体(如Noto Sans、思源黑体等),将字体TTF文件上传到服务器后调用注册方法:$dompdf = new Dompdf\Dompdf(); $dompdf->getFontMetrics()->registerFont( ['family' => 'custom_font', 'style' => 'normal', 'weight' => 'normal'], '字体文件的绝对路径.ttf' ); - 统一字符编码
导出的HTML模板头部需明确添加<meta charset="UTF-8">,SQL Server数据库连接配置需指定编码为UTF-8,避免查询出的源数据本身存在编码异常。 - 强制指定字体样式
所有HTML内容的CSS规则中,需明确给所有元素设置font-family: custom_font, sans-serif,不要留空或继承系统默认字体。
内容的提问来源于stack exchange,提问作者Arwa Alharbi
相关产品推荐
相关产品推荐

