UNPKG

gcp-nrces-fhir

Version:

Google cloud healthcare api NRCES FHIR implimenataion

115 lines 4.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const html_to_pdfmake_1 = __importDefault(require("html-to-pdfmake")); const pdfmake_1 = __importDefault(require("pdfmake/build/pdfmake")); const vfs_fonts_1 = __importDefault(require("pdfmake/build/vfs_fonts")); const jsdom_1 = require("jsdom"); pdfmake_1.default.vfs = vfs_fonts_1.default; pdfmake_1.default.fonts = { Roboto: { normal: "Roboto-Regular.ttf", bold: "Roboto-Medium.ttf", italics: "Roboto-Italic.ttf", bolditalics: "Roboto-Italic.ttf", }, }; function createPdf(html, data) { return new Promise((resolve, reject) => { const window = new jsdom_1.JSDOM("").window; html = html.replace(/<!-- pagebreak -->/g, '<div class="pagebreak"> </div>'); const paragraphSpaceHalf = data.paragraphSpace ? data.paragraphSpace / 2 : 3; const pdfmakeData = (0, html_to_pdfmake_1.default)(html, { window: window, tableAutoSize: true, defaultStyles: { p: { margin: [0, paragraphSpaceHalf, 0, paragraphSpaceHalf] }, }, }); const content = []; if (data.headerbase64Image) { content.push({ image: data.headerbase64Image, width: 500 }); } content.push(pdfmakeData); const qrcode = data.qrcode ? { qr: data.qrcode, fit: data.qrCodeWidth ? `${data.qrCodeWidth}` : "100" } : null; const esign = data.esign ? [ { image: data.esign.image, width: 100, alignment: "right" }, { text: data.esign.nameLine1, alignment: "right" }, ...(data.esign.nameLine2 ? [{ text: data.esign.nameLine2, alignment: "right" }] : []), ] : null; const signTable = { layout: "noBorders", table: { widths: ["50%", "50%"], body: [[qrcode || "", esign || ""]], }, }; content.push(signTable); // Media (attachments) if (data.media) { const size = 500; if (data.media.singleImagePerPage) { data.media.content.forEach((el, i) => { content.push(Object.assign({ image: el, width: size }, (i > 0 ? { pageBreak: "before" } : {}))); }); } else { const body = []; const contentLength = data.media.content.length - 1; data.media.content.forEach((el, i) => { if (i % 2 === 0 && i < contentLength) { body.push([ { image: data.media.content[i], width: size / 2.1 }, { image: data.media.content[i + 1], width: size / 2.1 }, ]); } else if (i % 2 === 0 && i === contentLength) { body.push([{ image: data.media.content[i], width: size / 2.1 }, ""]); } }); if (body.length > 0) { content.push({ layout: "noBorders", table: { body }, pageBreak: "before", }); } } } const docDefinition = { pageSize: data.paperSize || "A4", pageMargins: [ data.leftMargin || 40, data.topMargin || 40, data.rightMargin || 40, data.bottomMargin || 40, ], content, defaultStyle: { fontSize: 10, lineHeight: 1 }, pageBreakBefore: (currentNode) => currentNode.style && currentNode.style.indexOf("pagebreak") > -1, }; if (data.header) { docDefinition.header = data.header; } if (data.footer) { docDefinition.footer = data.footer; } const pdfDoc = pdfmake_1.default.createPdf(docDefinition); pdfDoc.getBase64((cb) => { if (data.base64) { resolve(cb); } else { resolve(Buffer.from(cb, "base64")); } }); }); } exports.default = createPdf; //# sourceMappingURL=PdfGenerator.js.map