mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2024-12-21 19:08:24 +01:00
25 lines
943 B
JavaScript
25 lines
943 B
JavaScript
|
const { PDFDocument, ParseSpeeds } = PDFLib;
|
||
|
|
||
|
export const extractPages = async (snapshot, pagesToExtractArray) => {
|
||
|
const pdfDoc = await PDFDocument.load(snapshot)
|
||
|
|
||
|
// TODO: invent a better format for pagesToExtractArray and convert it.
|
||
|
return createSubDocument(pdfDoc, pagesToExtractArray);
|
||
|
};
|
||
|
|
||
|
export async function createSubDocument(pdfDoc, pagesToExtractArray) {
|
||
|
const subDocument = await PDFDocument.create();
|
||
|
|
||
|
// Check that array max number is not larger pdf pages number
|
||
|
if(Math.max(...pagesToExtractArray) >= pdfDoc.getPageCount()) {
|
||
|
throw new Error(`The PDF document only has ${pdfDoc.getPageCount()} pages and you tried to extract page ${Math.max(...pagesToExtractArray)}`);
|
||
|
}
|
||
|
|
||
|
const copiedPages = await subDocument.copyPages(pdfDoc, pagesToExtractArray);
|
||
|
|
||
|
for (let i = 0; i < copiedPages.length; i++) {
|
||
|
subDocument.addPage(copiedPages[i]);
|
||
|
}
|
||
|
|
||
|
return subDocument.save();
|
||
|
}
|