UNPKG

@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
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; };