UNPKG

@digimuza/pdf-tools

Version:

PDF generation library & generation utilities

59 lines (58 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generate = exports.mergePDF = void 0; const tslib_1 = require("tslib"); const P = (0, tslib_1.__importStar)(require("ts-prime")); const Jet = (0, tslib_1.__importStar)(require("fs-jetpack")); const tmp_1 = require("tmp"); const utils_1 = require("@digimuza/pdf-components/lib/utils"); const ix_1 = require("ix"); const html_to_pdf = require('./html-to-pdf.js'); const pdf_merger_js_1 = (0, tslib_1.__importDefault)(require("pdf-merger-js")); async function mergePDF(pdfList, options) { var _a; const merger = new pdf_merger_js_1.default(); for (const pdf of pdfList) { merger.add(pdf); } await merger.save(options.output); (_a = options.logger) === null || _a === void 0 ? void 0 : _a.info(`PDF stored to ${options.output}`); } exports.mergePDF = mergePDF; async function singlePdf(content) { const format = P.isObject(content.format) ? Object.assign({}, (0, utils_1.flipDimensions)([content.format.width, content.format.height], true)) : { format: content.format, }; const result = await P.canFail(() => html_to_pdf.generatePdf({ content: content.content, }, Object.assign(Object.assign({}, format), { landscape: content.landscape }))); if (P.isError(result)) throw result; return result; } /** * * @returns {string} File to generated pdf file */ async function generate(args) { let progress = 0; const pdfList = await ix_1.AsyncIterable.from(args.content.map((e, index) => (Object.assign(Object.assign({}, e), { index })))) .buffer(3) .map((pdf) => { return Promise.all(pdf.map((c) => { var _a; (_a = args.logger) === null || _a === void 0 ? void 0 : _a.info(`Generating (${c.index + 1}/${args.content.length}) page...`); return singlePdf(c); })); }) .toArray(); const mergedPDF = P.flatten(pdfList); const name = args.output ? Jet.path(process.cwd(), args.output) : (0, tmp_1.tmpNameSync)(); await mergePDF(mergedPDF, { logger: args.logger, output: name, }); return name; } exports.generate = generate;