jsPDF中maxWidth与splitTextToSize功能失效问题求助
解决jsPDF文本自动换行问题
问题原因
你遇到的问题是splitTextToSize用法错误导致代码报错,同时旧版jsPDF对text方法的maxWidth参数支持存在局限。另外代码里还有两处日期处理的小问题需要修正。
修正后的完整代码
function generatePDF() { var name = "Blah"; var paymentaddress = 'some bullshit, but like a whole lotta bulshit, man, like you know what I mean, man?'; var date = new Date(); var totalPrice = 100; let day = date.getDate(); let month = date.getMonth() + 1; // 月份从0开始,加1才是实际月份 let year = date.getFullYear(); // 替换废弃的getYear()方法 var pdf = new jsPDF(); pdf.setFont('courier'); pdf.setFontSize(22); pdf.text("Test Order Receipt", 38, 23); pdf.setFontSize(12); pdf.text("Name: " + name, 20, 40); // 处理付款地址自动换行:先拼接完整文本,再拆分 var addressText = "Payment Address: " + paymentaddress; // splitTextToSize(文本内容, 最大宽度) 返回拆分后的文本数组 var splitAddress = pdf.splitTextToSize(addressText, 170); // 宽度适配页面边距(200-15*2) // 渲染拆分后的文本,自动逐行显示 pdf.text(splitAddress, 20, 50); pdf.text("Total: €" + totalPrice + ".00", 20, 95); pdf.text("Date: " + day + "/" + month + "/" + year, 20, 110); pdf.line(15, 30, 200, 30); pdf.line(15, 30, 15, 120); pdf.line(15, 120, 200, 120); pdf.line(200, 120, 200, 30); pdf.line(15, 100, 200, 100); pdf.save('Receipt (' + date + ').pdf'); }
关键修正点
- 正确使用
splitTextToSize:该方法接收文本内容和最大宽度两个核心参数,返回按宽度拆分后的字符串数组,再传递给pdf.text即可自动换行渲染。 - 修复日期显示问题:替换废弃的
getYear()为getFullYear(),同时给月份加1(getMonth()返回0-11对应实际1-12月)。 - 适配页面宽度:设置拆分宽度为170,匹配页面左右15的边距,避免文本超出边框。
内容的提问来源于stack exchange,提问作者Frighthound
相关产品推荐
相关产品推荐

