@aeolun/muhammara
Version:
Create, read and modify PDF files and streams. A drop in replacement for hummusjs PDF library
44 lines (41 loc) • 1.45 kB
JavaScript
const muhammara = require("../muhammara");
const hummusUtils = require("./utils");
/**
* Append pages from the other pdf to the current pdf
* @name appendPage
* @function
* @memberof Recipe
* @param {string} pdfSrc - The path for the other pdf.
* @param {number|number[]} pages - The page number or the array of page numbers to be appended.
*/
exports.appendPage = function appendPage(pdfSrc, pages = []) {
if (!Array.isArray(pages) && !isNaN(pages)) {
pages = [pages];
}
// Using stream so it can be closed to release reader resource (Issue #61)
const instream = new muhammara.PDFRStreamForFile(pdfSrc);
const pdfReader = muhammara.createReader(instream);
const pageCount = pdfReader.getPagesCount();
instream.close();
// prevent unmatched pagenumber
const transformPageNumber = (pageNum) => {
pageNum = pageNum > pageCount ? pageCount : pageNum;
pageNum = pageNum < 1 ? 1 : pageNum;
return pageNum - 1;
};
pages = pages.map((element) => {
if (Array.isArray(element)) {
return [transformPageNumber(element[0]), transformPageNumber(element[1])];
} else {
return [transformPageNumber(element), transformPageNumber(element)];
}
});
if (pages.length > 0) {
hummusUtils.appendPDFPagesFromPDFWithAnnotations(this.writer, pdfSrc, {
specificRanges: pages,
});
} else {
hummusUtils.appendPDFPagesFromPDFWithAnnotations(this.writer, pdfSrc);
}
return this;
};