var fonts = { Roboto: { normal: 'fonts/Roboto-Regular.ttf', bold: 'fonts/Roboto-Medium.ttf', italics: 'fonts/Roboto-Italic.ttf', bolditalics: 'fonts/Roboto-MediumItalic.ttf' } }; var printer = new PdfPrinter(fonts); import PdfPrinter from 'pdfmake'; import * as fs from "fs"; var workplace = "ВЛ 10 кВ ТП №265- ТП № 240"; var organization_name = "Филиал \"СЭС\""; var subdivision_name = "Пушкинский РЭС"; var externalDataRetrievedFromServer = [ { 'Наименование и местоположение объекта:': workplace, 'Выявленные дефекты:': 'deffect 1', 'Срок устранения:': 10 }, { 'Наименование и местоположение объекта:': 'Place 2', 'Выявленные дефекты:': 'deffect 2', 'Срок устранения:': 20 }, { 'Наименование и местоположение объекта:': 'Place 3', 'Выявленные дефекты:': 'deffect 3', 'Срок устранения:': 30 }, ]; function buildTableBody(data, columns) { var body = []; body.push(columns); data.forEach(function(row) { var dataRow = []; columns.forEach(function(column) { dataRow.push(row[column].toString()); }); body.push(dataRow); }); return body; } function table(data, columns) { return { table: { headerRows: 1, body: buildTableBody(data, columns) } }; } var docDefinition = { content: [ { text: "Организация: " + organization_name, style: 'SubTitleBold' }, { text: "Подразделение: " + subdivision_name, style: 'SubTitleBold' }, '\n', { text: "ЛИСТОК ОСМОТРА ВЛ", style: 'TitleBold', alignment: 'center' }, { text: workplace, alignment: 'center' }, '\n', table(externalDataRetrievedFromServer, ['Наименование и местоположение объекта:', 'Выявленные дефекты:', 'Срок устранения:']) ], styles: { TitleBold: { fontSize: 14, bold: true }, SubTitleBold: { fontSize: 14, bold: true } } } var options = {} var pdfDoc = printer.createPdfKitDocument(docDefinition, options); pdfDoc.pipe(fs.createWriteStream('document.pdf')); pdfDoc.end();