feat: starting page number option

pr675
Hufe921 3 years ago
parent c58362cf90
commit bfc61a8a06

@ -18,18 +18,23 @@ export class PageNumber {
} }
public render(ctx: CanvasRenderingContext2D, pageNo: number) { public render(ctx: CanvasRenderingContext2D, pageNo: number) {
const { pageNumber: { size, font, color, rowFlex, numberType, format }, scale, pageMode } = this.options const {
scale,
pageMode,
pageNumber: { size, font, color, rowFlex, numberType, format, startPageNo, fromPageNo }
} = this.options
if (pageNo < fromPageNo) return
// 处理页码格式 // 处理页码格式
let text = format let text = format
const pageNoReg = new RegExp(FORMAT_PLACEHOLDER.PAGE_NO) const pageNoReg = new RegExp(FORMAT_PLACEHOLDER.PAGE_NO)
if (pageNoReg.test(text)) { if (pageNoReg.test(text)) {
const realPageNo = pageNo + 1 const realPageNo = pageNo + startPageNo - fromPageNo
const pageNoText = numberType === NumberType.CHINESE ? convertNumberToChinese(realPageNo) : `${realPageNo}` const pageNoText = numberType === NumberType.CHINESE ? convertNumberToChinese(realPageNo) : `${realPageNo}`
text = text.replace(pageNoReg, pageNoText) text = text.replace(pageNoReg, pageNoText)
} }
const pageCountReg = new RegExp(FORMAT_PLACEHOLDER.PAGE_COUNT) const pageCountReg = new RegExp(FORMAT_PLACEHOLDER.PAGE_COUNT)
if (pageCountReg.test(text)) { if (pageCountReg.test(text)) {
const pageCount = this.draw.getPageCount() const pageCount = this.draw.getPageCount() - fromPageNo
const pageCountText = numberType === NumberType.CHINESE ? convertNumberToChinese(pageCount) : `${pageCount}` const pageCountText = numberType === NumberType.CHINESE ? convertNumberToChinese(pageCount) : `${pageCount}`
text = text.replace(pageCountReg, pageCountText) text = text.replace(pageCountReg, pageCountText)
} }

@ -15,5 +15,7 @@ export const defaultPageNumberOption: Readonly<Required<IPageNumber>> = {
rowFlex: RowFlex.CENTER, rowFlex: RowFlex.CENTER,
format: FORMAT_PLACEHOLDER.PAGE_NO, format: FORMAT_PLACEHOLDER.PAGE_NO,
numberType: NumberType.ARABIC, numberType: NumberType.ARABIC,
disabled: false disabled: false,
startPageNo: 1,
fromPageNo: 0
} }

@ -10,4 +10,6 @@ export interface IPageNumber {
format?: string; format?: string;
numberType?: NumberType; numberType?: NumberType;
disabled?: boolean; disabled?: boolean;
startPageNo?: number;
fromPageNo?: number;
} }
Loading…
Cancel
Save