From afce6882493c198595a0575640dd313c8cbdb14f Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Sat, 1 Jun 2024 21:15:06 +0800 Subject: [PATCH] feat: add maximum page number option #617 --- docs/en/guide/option.md | 1 + docs/guide/option.md | 1 + src/editor/core/draw/Draw.ts | 9 ++++++++- src/editor/dataset/constant/PageNumber.ts | 3 ++- src/editor/interface/PageNumber.ts | 1 + 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/en/guide/option.md b/docs/en/guide/option.md index f787972..ff76b45 100644 --- a/docs/en/guide/option.md +++ b/docs/en/guide/option.md @@ -117,6 +117,7 @@ interface IPageNumber { disabled?: boolean // Whether to disable startPageNo?: number // Start page number.default: 1 fromPageNo?: number // Page numbers appear from page number.default: 0 + maxPageNo?: number | null // Max page number(starting from 0).default: null } ``` diff --git a/docs/guide/option.md b/docs/guide/option.md index f3bb0e6..3ec3abb 100644 --- a/docs/guide/option.md +++ b/docs/guide/option.md @@ -117,6 +117,7 @@ interface IPageNumber { disabled?: boolean // 是否禁用 startPageNo?: number // 起始页码。默认:1 fromPageNo?: number // 从第几页开始出现页码。默认:0 + maxPageNo?: number | null // 最大页码(从0开始)。默认:null } ``` diff --git a/src/editor/core/draw/Draw.ts b/src/editor/core/draw/Draw.ts index 59a11ee..6e5bfdd 100644 --- a/src/editor/core/draw/Draw.ts +++ b/src/editor/core/draw/Draw.ts @@ -1681,7 +1681,10 @@ export class Draw { private _computePageList(): IRow[][] { const pageRowList: IRow[][] = [[]] - const { pageMode } = this.options + const { + pageMode, + pageNumber: { maxPageNo } + } = this.options const height = this.getHeight() const marginHeight = this.getMainOuterHeight() let pageHeight = marginHeight @@ -1709,6 +1712,10 @@ export class Draw { row.height + pageHeight > height || this.rowList[i - 1]?.isPageBreak ) { + if (Number.isInteger(maxPageNo) && pageNo >= maxPageNo!) { + this.elementList = this.elementList.slice(0, row.startIndex) + break + } pageHeight = marginHeight + row.height pageRowList.push([row]) pageNo++ diff --git a/src/editor/dataset/constant/PageNumber.ts b/src/editor/dataset/constant/PageNumber.ts index 72d5bca..1bd14f1 100644 --- a/src/editor/dataset/constant/PageNumber.ts +++ b/src/editor/dataset/constant/PageNumber.ts @@ -17,5 +17,6 @@ export const defaultPageNumberOption: Readonly> = { numberType: NumberType.ARABIC, disabled: false, startPageNo: 1, - fromPageNo: 0 + fromPageNo: 0, + maxPageNo: null } diff --git a/src/editor/interface/PageNumber.ts b/src/editor/interface/PageNumber.ts index 3cdc09a..4f669a9 100644 --- a/src/editor/interface/PageNumber.ts +++ b/src/editor/interface/PageNumber.ts @@ -12,4 +12,5 @@ export interface IPageNumber { disabled?: boolean startPageNo?: number fromPageNo?: number + maxPageNo?: number | null }