如何使用PDFmake仅在第一页显示页眉
问题:PDFmake 多页发票页眉与表格重叠(第二页及以后)
使用PDFmake构建动态发票时,第一页页眉显示正常,但从第二页开始页眉会与表格内容重叠。尝试过两种解决思路:从第二页起移除页眉、调整表格位置避开页眉,但均未成功;使用pageBreak尝试移除后续页面页眉时,导致所有页面的页眉都被删除。
当前的文档定义代码如下:
let docDefinition: TDocumentDefinitions = { header: { margin: [35, 35, 0, 50], width: 200, image: `image base 64`, alignment: 'right' }, footer: { margin: 10, fontSize: 7, columns: [ { text: new Date().toDateString(), alignment: 'left' }, { text: `Company Name | ${this.pdfData.quotation.employeeName} `, alignment: 'center' }, { text: '', alignment: 'right' } ]}, };
解决方案1:保留所有页面页眉,通过边距避免重叠
PDFmake的全局页眉会渲染在页面边距范围内,因此只需调整页面的顶部边距,让正文内容自动从页眉下方开始,即可避免重叠。
修改文档定义,添加pageMargins配置,将顶部边距设置为足够容纳页眉的高度(页眉的顶部margin + 图片高度 + 页眉的底部margin):
let docDefinition: TDocumentDefinitions = { pageMargins: [35, 120, 35, 40], // 根据实际页眉高度调整顶部边距值 header: { margin: [35, 35, 0, 50], width: 200, image: `image base 64`, alignment: 'right' }, footer: { margin: 10, fontSize: 7, columns: [ { text: new Date().toDateString(), alignment: 'left' }, { text: `Company Name | ${this.pdfData.quotation.employeeName} `, alignment: 'center' }, { text: '', alignment: 'right' } ] }, // 你的表格及其他内容 };
注意:
pageMargins的四个值分别对应[左, 上, 右, 下],可根据页眉的实际尺寸微调顶部边距数值。
解决方案2:仅第一页显示页眉,后续页面隐藏
如果需求是仅第一页显示页眉,不要使用全局的header配置,而是将页眉作为第一页内容的一部分手动添加,后续页面通过分页符分隔且不添加页眉:
let docDefinition: TDocumentDefinitions = { content: [ // 第一页专属页眉 { margin: [35, 35, 0, 50], width: 200, image: `image base 64`, alignment: 'right' }, // 第一页的表格内容 yourFirstPageTableContent, // 分页符,切换到第二页 { pageBreak: 'after' }, // 第二页及以后的内容(无页眉) yourSubsequentPagesContent ], footer: { margin: 10, fontSize: 7, columns: [ { text: new Date().toDateString(), alignment: 'left' }, { text: `Company Name | ${this.pdfData.quotation.employeeName} `, alignment: 'center' }, { text: '', alignment: 'right' } ] } };
这种方式可以精准控制仅第一页显示页眉,避免全局页眉在后续页面造成的重叠问题。
内容的提问来源于stack exchange,提问作者Damien Garlinge
相关产品推荐
相关产品推荐

