feat: add maximum page number option #617

pr675
Hufe921 2 years ago
parent ac795b0bc4
commit afce688249

@ -117,6 +117,7 @@ interface IPageNumber {
disabled?: boolean // Whether to disable disabled?: boolean // Whether to disable
startPageNo?: number // Start page number.default: 1 startPageNo?: number // Start page number.default: 1
fromPageNo?: number // Page numbers appear from page number.default: 0 fromPageNo?: number // Page numbers appear from page number.default: 0
maxPageNo?: number | null // Max page numberstarting from 0.default: null
} }
``` ```

@ -117,6 +117,7 @@ interface IPageNumber {
disabled?: boolean // 是否禁用 disabled?: boolean // 是否禁用
startPageNo?: number // 起始页码。默认1 startPageNo?: number // 起始页码。默认1
fromPageNo?: number // 从第几页开始出现页码。默认0 fromPageNo?: number // 从第几页开始出现页码。默认0
maxPageNo?: number | null // 最大页码从0开始。默认null
} }
``` ```

@ -1681,7 +1681,10 @@ export class Draw {
private _computePageList(): IRow[][] { private _computePageList(): IRow[][] {
const pageRowList: IRow[][] = [[]] const pageRowList: IRow[][] = [[]]
const { pageMode } = this.options const {
pageMode,
pageNumber: { maxPageNo }
} = this.options
const height = this.getHeight() const height = this.getHeight()
const marginHeight = this.getMainOuterHeight() const marginHeight = this.getMainOuterHeight()
let pageHeight = marginHeight let pageHeight = marginHeight
@ -1709,6 +1712,10 @@ export class Draw {
row.height + pageHeight > height || row.height + pageHeight > height ||
this.rowList[i - 1]?.isPageBreak this.rowList[i - 1]?.isPageBreak
) { ) {
if (Number.isInteger(maxPageNo) && pageNo >= maxPageNo!) {
this.elementList = this.elementList.slice(0, row.startIndex)
break
}
pageHeight = marginHeight + row.height pageHeight = marginHeight + row.height
pageRowList.push([row]) pageRowList.push([row])
pageNo++ pageNo++

@ -17,5 +17,6 @@ export const defaultPageNumberOption: Readonly<Required<IPageNumber>> = {
numberType: NumberType.ARABIC, numberType: NumberType.ARABIC,
disabled: false, disabled: false,
startPageNo: 1, startPageNo: 1,
fromPageNo: 0 fromPageNo: 0,
maxPageNo: null
} }

@ -12,4 +12,5 @@ export interface IPageNumber {
disabled?: boolean disabled?: boolean
startPageNo?: number startPageNo?: number
fromPageNo?: number fromPageNo?: number
maxPageNo?: number | null
} }

Loading…
Cancel
Save