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

React-js中js-pdf生成PDF尺寸异常问题求助

解决jsPDF生成PDF尺寸放大/字体过大的问题

核心问题分析

你遇到的PDF尺寸异常,主要是文档尺寸参数设置错误加上HTML转换时未指定适配规则导致的:

  • 创建jsPDF实例时,你传入的尺寸[297,210]是横向A4的尺寸,但你设置的是纵向('p'),这会让页面比例颠倒,内容被迫缩放适配错误的画布。
  • doc.html()方法默认没有严格匹配页面宽度,导致内容被过度放大。

修复步骤

1. 修正PDF文档尺寸

纵向A4的标准尺寸是宽210mm、高297mm,直接使用预设的'a4'参数更不易出错:

function handleDownload() {
    // 用预设的a4纵向,替代手动写尺寸
    const doc = new jsPDF('p', 'mm', 'a4');
    const content = pdfRef.current;
    doc.html(content, {
      // 指定内容宽度适配页面宽度(210mm)
      width: 210,
      callback: function (doc) {
        doc.save('我的简历.pdf');
      }
    });
}

如果坚持手动指定尺寸,应该写成new jsPDF('p', 'mm', [210, 297]),和你的HTML元素尺寸对应。

2. 确保HTML元素样式严谨

给导出元素加上box-sizing: border-box,避免padding/margin导致实际尺寸超出210mm:

<main 
  id="classic" 
  ref={pdfRef} 
  className='mx-auto bg-white shadow w-[210mm] h-[297mm] box-border'
>
  <button onClick={handleDownload} className="bg-mainBlack text-white px-4 py-2 text-xs">download</button>
  {/* Rest inner elements */}
</main>

3. 可选:调整转换缩放比例

如果还是有适配问题,可以在doc.html()的配置里添加scale参数,精细控制缩放:

doc.html(content, {
  width: 210,
  scale: 0.95, // 根据实际情况微调
  callback: function (doc) {
    doc.save('我的简历.pdf');
  }
});

效果验证

修正后,PDF的尺寸会和你浏览器中渲染的210x297mm元素完全匹配,内容不会被过度放大或偏移。

内容的提问来源于stack exchange,提问作者Zohaib Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:50:20