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

pdfkit-table无法自动分页,后续表格重叠在第一页求助

解决pdfkit-table多表格分页重叠问题

问题核心在于pdfkit-table的doc.table()方法是异步操作(返回Promise),如果不等待前一个表格渲染完成就执行下一个表格的创建,PDFKit无法正确更新当前文档的绘制位置,导致后续表格仍从第一页的原有位置开始绘制,最终出现重叠。

修复方案

在每个doc.table()调用前添加await,确保前一个表格完成渲染(包括自动分页)后,再处理下一个表格:

async createPdf(
    lastMetars: any[],
    lastTafs: any[],
    lastSigmets: any[],
    facu: any,
    imagesToRender: any[],
  ) {

    const doc = new PDFDocument({ size: 'A4' });
    doc.pipe(fs.createWriteStream('output.pdf'));

    doc.fontSize(25).text('CUB470 2024-07-15 MUHA LEMD', { align: 'center' });

    doc.image(
      '/media/datos/ecna.jpg',
      200,
      100,
      { fit: [200, 200], align: 'center', valign: 'center' },
    );

    doc.moveDown(7);

    const tableMetars = {
      title: 'METAR',
      headers: [''],
      rows: lastMetars.map((metar) => {
        return [metar.text];
      }),
    };
    // 等待第一个表格渲染完成
    await doc.table(tableMetars, {
      hideHeader: true,
    });

    const tableTafs = {
      title: 'TAF',
      headers: [''],
      rows: lastTafs.map((taf) => {
        return [taf.text];
      }),
    };
    // 等待第二个表格渲染完成
    await doc.table(tableTafs, {
      hideHeader: true,
    });

    const tableSigmets = {
      title: 'SIGMET',
      headers: [''],
      rows: lastSigmets.map((sigmet) => {
        return [sigmet.text];
      }),
    };
    // 等待第三个表格渲染完成
    await doc.table(tableSigmets, {
      hideHeader: true,
    });

    if (facu) {
      const tableFacu = {
        title: 'FACU',
        headers: [''],
        rows: [[facu.text]],
      };
      // 等待第四个表格渲染完成
      await doc.table(tableFacu, {
        hideHeader: true,
      });
    }
   
    doc.end();
}

额外优化提示

  • 可以为表格配置margin选项,控制表格与上下内容的间距,避免内容过于紧凑:
    await doc.table(tableMetars, {
      hideHeader: true,
      margin: { top: 10, bottom: 15 }
    });
    
  • pdfkit-table默认支持单表格内内容自动分页,只要确保等待表格渲染的Promise完成,就能保证分页逻辑正常执行。

内容的提问来源于stack exchange,提问作者Lazaro Falcon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:03:20