33 lines
982 B
TypeScript
Raw Normal View History

2023-10-26 21:53:02 +03:00
import { getPages } from "./common/getPagesByIndex";
import { PdfFile } from '../wrappers/PdfFile';
export type SplitPdfParamsType = {
file: PdfFile;
splitAfterPageArray: number[];
}
export async function splitPDF(params: SplitPdfParamsType): Promise<PdfFile[]> {
const { file, splitAfterPageArray } = params;
2023-11-16 02:26:45 +03:00
const pdfLibDocument = await file.pdfLibDocument;
2023-10-17 03:40:54 +02:00
2023-11-16 02:26:45 +03:00
const numberOfPages = pdfLibDocument.getPages().length;
2023-10-17 03:40:54 +02:00
let pagesArray: number[] = [];
2023-10-17 03:40:54 +02:00
let splitAfter = splitAfterPageArray.shift();
const subDocuments: PdfFile[] = [];
2023-10-17 03:40:54 +02:00
for (let i = 0; i < numberOfPages; i++) {
if(splitAfter && i > splitAfter && pagesArray.length > 0) {
subDocuments.push(await getPages(file, pagesArray));
2023-10-17 03:40:54 +02:00
splitAfter = splitAfterPageArray.shift();
pagesArray = [];
}
pagesArray.push(i);
2023-10-17 03:40:54 +02:00
}
subDocuments.push(await getPages(file, pagesArray));
2023-10-17 03:40:54 +02:00
pagesArray = [];
return subDocuments;
};