You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 04:35:01