UNPKG

tea-school

Version:

A simplified html + css --> PDF generator

48 lines (47 loc) 2.09 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const pug = __importStar(require("pug")); const sass = __importStar(require("node-sass")); const puppeteer_1 = __importDefault(require("puppeteer")); var TeaSchool; (function (TeaSchool) { TeaSchool.generatePdf = async (options) => { const browser = await puppeteer_1.default.launch(options.puppeteerOptions); const page = await browser.newPage(); let htmlTemplateOptions = Object.assign({}, options.htmlTemplateOptions); let renderedTemplate; // This is conditional since the user could get his style in some other way. if (options.styleOptions) { const compiledStyle = sass.renderSync(Object.assign({}, options.styleOptions)); htmlTemplateOptions.compiledStyle = compiledStyle.css; } if (options.htmlTemplateFn) { renderedTemplate = options.htmlTemplateFn(htmlTemplateOptions); } else if (options.htmlTemplatePath) { renderedTemplate = pug.renderFile(options.htmlTemplatePath, htmlTemplateOptions); } else { throw Error('htmlTemplateFn or htmlTemplatePath must be provided'); } // Make puppeteer render the HTML from data buffer await page.setContent(renderedTemplate, { waitUntil: ['load', 'domcontentloaded', 'networkidle0'], }); const pdfBuffer = await page.pdf(Object.assign({}, options.pdfOptions)); await browser.close(); return pdfBuffer; }; })(TeaSchool || (TeaSchool = {})); exports.generatePdf = TeaSchool.generatePdf; exports.default = TeaSchool;