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

pdfMake 1.60版本pageBreakBefore不生效,如何实现多内容块各自独立分页

解决方案

问题原因

你当前配置的pageBreakBefore回调未生效,是因为触发条件设置不合理:

  • 回调内要求当前节点的headlineLevel等于1,同时当前页剩余节点为空才会分页,正常生成的内容节点默认不会携带headlineLevel属性,自然不会触发返回true的逻辑
  • 你在根配置中添加的unbreakable: true不属于全局生效配置,该属性仅作用于单个内容块,无法全局生效

可行实现方案

两种方案都可以实现每份PDF内容单独分页的需求,推荐优先用第一种:

方案1:直接给每份内容添加分页标记(无需回调)

不需要保留pageBreakBefore配置,只需对getContent返回的内容数组做简单处理即可:

let rawContent = this.getContent(checkedOrders, selectedLabOrders);
let processedContent = [];
rawContent.forEach((pdfItem, index) => {
  // 如果单份PDF内容是多个节点组成的数组,就用stack包裹,保证整体不可拆分+分页属性生效
  const contentBlock = Array.isArray(pdfItem) ? { stack: pdfItem } : pdfItem;
  processedContent.push({
    ...contentBlock,
    unbreakable: true, // 防止单份PDF内容被自动拆分到两页
    // 最后一份内容不需要加后置分页
    pageBreak: index === rawContent.length - 1 ? undefined : 'after'
  })
})

this.docDefinition = {
  info: {
    title: 'Title',
    subject: 'labOrder-' 
  },
  pageSize: 'LETTER',
  pageOrientation: 'landscape',
  pageMargins: [40, 30, 40, 30],
  content: processedContent,
  // 原有的pageBreakBefore配置可以删除
  styles: {
    titleHeader: {
      fontSize: 16,
      bold: true,
      margin: [0, 10, 0, 0],
    },
    tableHeader: {
      bold: true,
      fontSize: 13,
      color: 'black'
    }
  },
  defaultStyle: {
    fontSize: 9,
    lineHeight: .9
  }
};

方案2:调整pageBreakBefore回调逻辑

如果需要用回调实现,只需给除第一份外的所有内容块添加自定义标识,回调识别到标识就返回true触发分页:

let rawContent = this.getContent(checkedOrders, selectedLabOrders);
let processedContent = rawContent.map((pdfItem, index) => {
  const contentBlock = Array.isArray(pdfItem) ? { stack: pdfItem } : pdfItem;
  return {
    ...contentBlock,
    unbreakable: true,
    // 给第二份及以后的内容加自定义标记
    isNewPdfBlock: index > 0
  }
})

this.docDefinition = {
  // 其他原有配置不变
  content: processedContent,
  pageBreakBefore: function(currentNode) {
    // 识别到自定义标记就触发分页
    return currentNode.isNewPdfBlock === true;
  },
  // 其他原有配置不变
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:06