UNPKG

jshtml-to-pdf

Version:
100 lines (99 loc) 4.19 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const handlebars_1 = __importDefault(require("handlebars")); const html_pdf_1 = __importDefault(require("html-pdf")); handlebars_1.default.registerHelper("ifCond", function (v1, operator, v2, options) { switch (operator) { case "==": return v1 == v2 ? options.fn(this) : options.inverse(this); case "===": return v1 === v2 ? options.fn(this) : options.inverse(this); case "!=": return v1 != v2 ? options.fn(this) : options.inverse(this); case "!==": return v1 !== v2 ? options.fn(this) : options.inverse(this); case "<": return v1 < v2 ? options.fn(this) : options.inverse(this); case "<=": return v1 <= v2 ? options.fn(this) : options.inverse(this); case ">": return v1 > v2 ? options.fn(this) : options.inverse(this); case ">=": return v1 >= v2 ? options.fn(this) : options.inverse(this); case "&&": return v1 && v2 ? options.fn(this) : options.inverse(this); case "||": return v1 || v2 ? options.fn(this) : options.inverse(this); default: return options.inverse(this); } }); const create = function (document, options) { return __awaiter(this, void 0, void 0, function* () { return new Promise((resolve, reject) => { if (!document || !document.html || !document.data) { reject(new Error("Some, or all, options are missing.")); } // Fix nodejs > 14 if (!options) { options = { childProcessOptions: { env: { OPENSSL_CONF: "/dev/null", } } }; } else { options.childProcessOptions = { env: { OPENSSL_CONF: "/dev/null", } }; } // Compiles a template const html = handlebars_1.default.compile(document.html)(document.data); // Create PDF from html template generated by handlebars // Output will be PDF file switch (document.type) { case "buffer": html_pdf_1.default.create(html, options).toBuffer((err, res) => { if (!err) resolve(res); else reject(err); }); break; case "stream": html_pdf_1.default.create(html, options).toStream((err, res) => { if (!err) resolve(res); else reject(err); }); break; default: html_pdf_1.default.create(html, options).toFile(document.path, (err, res) => { if (!err) resolve(res); else reject(err); }); break; } }); }); }; module.exports.create = create;