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

使用jsPDF导出div时内容被截断,求解决方案

解决jsPDF导出宽div内容截断问题

问题核心是你的div宽度(800px≈600pt)超过了A4纵向页面的可用宽度(A4纵向宽度为595pt,减去边距后可用宽度更小),导致内容被截断。以下是几种可行的解决方法:

方法1:切换PDF页面为横向

把A4页面改成横向,页面宽度变为842pt,足够容纳800px的内容:

savePdf() {
  // 'l'表示横向(landscape),替代默认的纵向'p'
  let doc = new jsPDF('l', 'pt', 'a4');

  const pdfTable = this.content.nativeElement;

  doc.html(pdfTable, {
    callback(rst) {
      rst.save('one.pdf');
    },
    x: 10,
    y: 10
  });
}

方法2:缩放内容适配纵向页面宽度

如果必须使用纵向页面,可通过html配置的width参数强制缩放内容到页面可用宽度:

savePdf() {
  let doc = new jsPDF('p', 'pt', 'a4');
  const pdfTable = this.content.nativeElement;
  
  // 计算页面可用宽度:A4纵向总宽度减去左右边距
  const pageWidth = doc.internal.pageSize.getWidth() - 20;

  doc.html(pdfTable, {
    callback(rst) {
      rst.save('one.pdf');
    },
    x: 10,
    y: 10,
    width: pageWidth // 强制内容缩放到该宽度
  });
}

方法3:添加PDF导出专用样式

给目标div添加仅在导出时生效的样式,调整宽度避免缩放变形:

savePdf() {
  let doc = new jsPDF('p', 'pt', 'a4');
  const pdfTable = this.content.nativeElement;
  
  // 临时修改元素宽度为页面可用宽度
  const originalWidth = pdfTable.style.width;
  pdfTable.style.width = '575pt';

  doc.html(pdfTable, {
    callback(rst) {
      rst.save('one.pdf');
      // 导出完成后恢复原宽度
      pdfTable.style.width = originalWidth;
    },
    x: 10,
    y: 10
  });
}

内容的提问来源于stack exchange,提问作者4dvanc3d

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:37:12