使用jsPDF生成PDF功能失效,如何实现文本转PDF下载?
修复方案
你的代码无法运行的核心问题是使用了jsPDF的UMD版本,全局导出的是jspdf对象而非直接的jsPDF构造函数,直接new jsPDF()会导致未定义错误。另外补充长文本换行逻辑,避免内容超出PDF页面。
修复后的完整代码:
<!DOCTYPE html> <html> <head> <title>Generate PDF from Text</title> </head> <body> <h1>Generate PDF from Text</h1> <textarea id="textInput" rows="10" cols="50"></textarea> <br> <button id="downloadBtn">Download as PDF</button> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script> <script> document.getElementById("downloadBtn").addEventListener("click", function() { const text = document.getElementById("textInput").value; // 从UMD导出的全局对象中解构jsPDF构造函数 const { jsPDF } = window.jspdf; // 创建PDF实例,指定A4页面格式 const doc = new jsPDF('p', 'mm', 'a4'); const pageWidth = doc.internal.pageSize.getWidth(); const margin = 10; doc.setFontSize(12); // 将长文本分割为适配页面宽度的段落 const splitText = doc.splitTextToSize(text, pageWidth - margin * 2); // 从页面边距位置开始添加文本 doc.text(splitText, margin, margin); doc.save("my_pdf.pdf"); }); </script> </body> </html>
关键修改说明:
- 新增
const { jsPDF } = window.jspdf;,正确获取UMD版本的构造函数 - 用
splitTextToSize处理长文本,自动适配A4页面宽度换行,避免内容溢出 - 明确指定PDF页面格式为A4,统一控制页面边距
内容的提问来源于stack exchange,提问作者Shubhajit Ghosh
相关产品推荐
相关产品推荐

