@resolveio/server-lib 12.0.6 → 12.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/methods/pdf.js CHANGED
@@ -342,35 +342,46 @@ function loadPDFMethods(methodManager) {
342
342
  promises_1.push(_this.callMethodInternal('getDataURIfromURL', signedUrl));
343
343
  });
344
344
  Promise.all(promises_1).then(function (fileDatas) { return __awaiter(_this, void 0, void 0, function () {
345
- var mergedPdf, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, b64PDF;
345
+ var mergedPdf_1, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, b64PDF;
346
+ var _this = this;
346
347
  return __generator(this, function (_a) {
347
348
  switch (_a.label) {
348
- case 0: return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
349
- case 1:
350
- mergedPdf = _a.sent();
351
- i = 0;
352
- _a.label = 2;
349
+ case 0:
350
+ if (!this._helperThread) return [3 /*break*/, 1];
351
+ this._helperThread.sendJobToHelperThread('mergePDFResolve', fileDatas).then(function (res) {
352
+ _this.callMethodInternal('uploadFileAndSave', fileName, res, (4 * Math.ceil(res.length / 3)), -1, fileType, false, function (errUp, resUp) {
353
+ resolve(resUp);
354
+ });
355
+ }, function (err) {
356
+ reject(err);
357
+ });
358
+ return [3 /*break*/, 18];
359
+ case 1: return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
353
360
  case 2:
354
- if (!(i < fileDatas.length)) return [3 /*break*/, 15];
361
+ mergedPdf_1 = _a.sent();
362
+ i = 0;
363
+ _a.label = 3;
364
+ case 3:
365
+ if (!(i < fileDatas.length)) return [3 /*break*/, 16];
355
366
  fileData = fileDatas[i];
356
- if (!fileData.startsWith('data:application/pdf;base64,')) return [3 /*break*/, 5];
367
+ if (!fileData.startsWith('data:application/pdf;base64,')) return [3 /*break*/, 6];
357
368
  return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileData)];
358
- case 3:
359
- pdf = _a.sent();
360
- return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
361
369
  case 4:
370
+ pdf = _a.sent();
371
+ return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
372
+ case 5:
362
373
  copiedPages = _a.sent();
363
374
  copiedPages.forEach(function (page) {
364
- mergedPdf.addPage(page);
375
+ mergedPdf_1.addPage(page);
365
376
  });
366
- return [3 /*break*/, 14];
367
- case 5:
368
- if (!(fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/'))) return [3 /*break*/, 9];
369
- return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
377
+ return [3 /*break*/, 15];
370
378
  case 6:
379
+ if (!(fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/'))) return [3 /*break*/, 10];
380
+ return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
381
+ case 7:
371
382
  pdf = _a.sent();
372
383
  return [4 /*yield*/, pdf.embedJpg(fileData)];
373
- case 7:
384
+ case 8:
374
385
  img = _a.sent();
375
386
  page = pdf.addPage();
376
387
  imgDim = img.size();
@@ -384,20 +395,20 @@ function loadPDFMethods(methodManager) {
384
395
  width: imgDim.width,
385
396
  height: imgDim.height,
386
397
  });
387
- return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
388
- case 8:
398
+ return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
399
+ case 9:
389
400
  copiedPages = _a.sent();
390
401
  copiedPages.forEach(function (page) {
391
- mergedPdf.addPage(page);
402
+ mergedPdf_1.addPage(page);
392
403
  });
393
- return [3 /*break*/, 14];
394
- case 9:
395
- if (!fileData.startsWith('data:image/png;base64,iVBOR')) return [3 /*break*/, 13];
396
- return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
404
+ return [3 /*break*/, 15];
397
405
  case 10:
406
+ if (!fileData.startsWith('data:image/png;base64,iVBOR')) return [3 /*break*/, 14];
407
+ return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
408
+ case 11:
398
409
  pdf = _a.sent();
399
410
  return [4 /*yield*/, pdf.embedPng(fileData)];
400
- case 11:
411
+ case 12:
401
412
  img = _a.sent();
402
413
  page = pdf.addPage();
403
414
  imgDim = img.size();
@@ -411,26 +422,27 @@ function loadPDFMethods(methodManager) {
411
422
  width: imgDim.width,
412
423
  height: imgDim.height,
413
424
  });
414
- return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
415
- case 12:
425
+ return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
426
+ case 13:
416
427
  copiedPages = _a.sent();
417
428
  copiedPages.forEach(function (page) {
418
- mergedPdf.addPage(page);
429
+ mergedPdf_1.addPage(page);
419
430
  });
420
- return [3 /*break*/, 14];
421
- case 13:
422
- console.log('Error - unsupported!!', fileData.slice(0, 60));
423
- _a.label = 14;
431
+ return [3 /*break*/, 15];
424
432
  case 14:
433
+ console.log('Error - unsupported!!', fileData.slice(0, 60));
434
+ _a.label = 15;
435
+ case 15:
425
436
  i++;
426
- return [3 /*break*/, 2];
427
- case 15: return [4 /*yield*/, mergedPdf.saveAsBase64({ dataUri: true })];
428
- case 16:
437
+ return [3 /*break*/, 3];
438
+ case 16: return [4 /*yield*/, mergedPdf_1.saveAsBase64({ dataUri: true })];
439
+ case 17:
429
440
  b64PDF = _a.sent();
430
441
  this.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, function (errUp, resUp) {
431
442
  resolve(resUp);
432
443
  });
433
- return [2 /*return*/];
444
+ _a.label = 18;
445
+ case 18: return [2 /*return*/];
434
446
  }
435
447
  });
436
448
  }); });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/methods/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["let fs = require('fs');\nimport { FileModel } from '../models/file.model';\nimport { HelperThread, MethodManager } from '../managers/method.manager';\nimport * as bent from 'bent';\nimport SimpleSchema from 'simpl-schema';\nimport { Files } from '../collections/file.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nimport { PDFDocument } from 'pdf-lib';\n\nlet pdfCnt = 0;\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(html, fileName, orientation = 'portrait', fontSize = '8px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (this._helperThread) {\n\t\t\t\t\t\t(<HelperThread>this._helperThread).sendJobToHelperThread('generatePDF', html, fileName, orientation, fontSize).then((res: string) => {\n\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet fileData = res;\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet phantom = require('phantom');\n\t\t\t\t\t\tlet phInstance = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\tphantom.create().then(instance => {\n\t\t\t\t\t\t\tphInstance = instance;\n\t\t\t\t\t\t\treturn instance.createPage();\n\t\t\t\t\t\t}).then(page => {\n\t\t\t\t\t\t\tlet requestsArray = [];\n\n\t\t\t\t\t\t\tpage.on('onResourceRequested', (requestData, networkRequest) => {\n\t\t\t\t\t\t\t\trequestsArray.push(requestData.id);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.on('onResourceReceived', (response) => {\n\t\t\t\t\t\t\t\tif (response.stage === 'end') {\n\t\t\t\t\t\t\t\t\tlet index = requestsArray.indexOf(response.id);\n\t\t\t\t\t\t\t\t\trequestsArray.splice(index, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.property('paperSize', {\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: '1cm',\n\t\t\t\t\t\t\t\torientation: orientation,\n\t\t\t\t\t\t\t\tfooter: {\n\t\t\t\t\t\t\t\t\theight: '1cm',\n\t\t\t\t\t\t\t\t\tcontents: phInstance.callback((pageNum, numPages) => {\n\t\t\t\t\t\t\t\t\t\treturn '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tpage.property('content', `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '8px') + `;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body>\n\t\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n\t\t\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet interval = setInterval(() => {\n\t\t\t\t\t\t\t\tif (requestsArray.length === 0) {\n\n\t\t\t\t\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tpage.render(tmpFileName, {\n\t\t\t\t\t\t\t\t\t\tformat: 'pdf',\n\t\t\t\t\t\t\t\t\t\tquality: '100'\n\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\tif (fs.existsSync(tmpFileName)) {\n\t\t\t\t\t\t\t\t\t\t\tfs.readFile(tmpFileName, (errRead, data) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfs.unlinkSync(tmpFileName);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressBase64AndUploadPDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileContent: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string, fileContent: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: 'base64',\n\t\t\t\t\t\t\t\tfile: fileContent,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressPDFOnS3: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfile: filePath,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach(signedUrl => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async fileDatas => {\n\t\t\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData);\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.size();\n\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\tlet imgDim = img.size();\n\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst b64PDF = await mergedPdf.saveAsBase64({ dataUri: true });\n\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\tresolve(resUp);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\tthis.callMethodInternal('createCloudConvertJob', fileKeys, ['merge', 'optimize'], mergeFileName, fileName).then(resCCJob => {\n\t\t\t\t\t\tif (resCCJob) {\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: resCCJob.data.tasks.filter(a => a.name === 'task-2')[0].result.files[0].size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\t\tif (resFile.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\treject(errUpFile);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, (err) => {\n\t\t\t\t\t\tconsole.log('Create Cloud Convert Job Error', err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFV1: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('compressPDFOnS3', resFile._id, fileName, mergeFileName, (errCompress, resCompress) => {\n\t\t\t\t\t\t\t\t\t\t\tif (resCompress) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject(errCompress);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\treject(errUpFile);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFNoUpload: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\n\t\t\t\t\t\t\t\t\tresolve(resFile);\n\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('deleteFile', mergeFileName);\n\t\t\t\t\t\t\t\t\t}, 60000);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\treject(errUpFile);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}"]}
1
+ {"version":3,"sources":["../../src/methods/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["let fs = require('fs');\nimport { FileModel } from '../models/file.model';\nimport { HelperThread, MethodManager } from '../managers/method.manager';\nimport * as bent from 'bent';\nimport SimpleSchema from 'simpl-schema';\nimport { Files } from '../collections/file.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nimport { PDFDocument } from 'pdf-lib';\n\nlet pdfCnt = 0;\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(html, fileName, orientation = 'portrait', fontSize = '8px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (this._helperThread) {\n\t\t\t\t\t\t(<HelperThread>this._helperThread).sendJobToHelperThread('generatePDF', html, fileName, orientation, fontSize).then((res: string) => {\n\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet fileData = res;\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet phantom = require('phantom');\n\t\t\t\t\t\tlet phInstance = null;\n\t\t\t\t\t\t\n\t\t\t\t\t\tphantom.create().then(instance => {\n\t\t\t\t\t\t\tphInstance = instance;\n\t\t\t\t\t\t\treturn instance.createPage();\n\t\t\t\t\t\t}).then(page => {\n\t\t\t\t\t\t\tlet requestsArray = [];\n\n\t\t\t\t\t\t\tpage.on('onResourceRequested', (requestData, networkRequest) => {\n\t\t\t\t\t\t\t\trequestsArray.push(requestData.id);\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.on('onResourceReceived', (response) => {\n\t\t\t\t\t\t\t\tif (response.stage === 'end') {\n\t\t\t\t\t\t\t\t\tlet index = requestsArray.indexOf(response.id);\n\t\t\t\t\t\t\t\t\trequestsArray.splice(index, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tpage.property('paperSize', {\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: '1cm',\n\t\t\t\t\t\t\t\torientation: orientation,\n\t\t\t\t\t\t\t\tfooter: {\n\t\t\t\t\t\t\t\t\theight: '1cm',\n\t\t\t\t\t\t\t\t\tcontents: phInstance.callback((pageNum, numPages) => {\n\t\t\t\t\t\t\t\t\t\treturn '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tpage.property('content', `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\t\tsrc: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '8px') + `;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\t\tmargin-bottom: 1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\t\tfont-family: Open Sans; \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body>\n\t\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n\t\t\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet interval = setInterval(() => {\n\t\t\t\t\t\t\t\tif (requestsArray.length === 0) {\n\n\t\t\t\t\t\t\t\t\tclearInterval(interval);\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tpage.render(tmpFileName, {\n\t\t\t\t\t\t\t\t\t\tformat: 'pdf',\n\t\t\t\t\t\t\t\t\t\tquality: '100'\n\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\tif (fs.existsSync(tmpFileName)) {\n\t\t\t\t\t\t\t\t\t\t\tfs.readFile(tmpFileName, (errRead, data) => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tfs.unlinkSync(tmpFileName);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t\t}, error => {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\tsetTimeout(function() { phInstance.exit(); }, 0);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressBase64AndUploadPDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileContent: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string, fileContent: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: 'base64',\n\t\t\t\t\t\t\t\tfile: fileContent,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcompressPDFOnS3: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfilePath: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, fileName: string, filePath: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'compress',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfile: filePath,\n\t\t\t\t\t\t\t\tfilename: fileName,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': filePath\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tFiles.updateOne({_id: id_file}, {$set: {size: body.output.size}});\n\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Compressed file has no size, compress failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach(signedUrl => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async fileDatas => {\n\t\t\t\t\t\t\t\tif (this._helperThread) {\n\t\t\t\t\t\t\t\t\t(<HelperThread>this._helperThread).sendJobToHelperThread('mergePDFResolve', fileDatas).then((res: string) => {\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, res, (4 * Math.ceil(res.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\t\t\tresolve(resUp);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\t\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.size();\n\t\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.size();\n\t\t\t\t\t\t\t\t\t\t\tif (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n\t\t\t\t\t\t\t\t\t\t\t\timgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\timg.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst b64PDF = await mergedPdf.saveAsBase64({ dataUri: true });\n\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\t\tresolve(resUp);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\tthis.callMethodInternal('createCloudConvertJob', fileKeys, ['merge', 'optimize'], mergeFileName, fileName).then(resCCJob => {\n\t\t\t\t\t\tif (resCCJob) {\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: resCCJob.data.tasks.filter(a => a.name === 'task-2')[0].result.files[0].size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\t\tif (resFile.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\treject(errUpFile);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, (err) => {\n\t\t\t\t\t\tconsole.log('Create Cloud Convert Job Error', err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFV1: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tif (body.output.size) {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('compressPDFOnS3', resFile._id, fileName, mergeFileName, (errCompress, resCompress) => {\n\t\t\t\t\t\t\t\t\t\t\tif (resCompress) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject(errCompress);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\treject(errUpFile);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('Merged file has no size, merge failed');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFNoUpload: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tthis.callMethodInternal('getCCProcessURL').then(async resCC => {\n\t\t\t\t\t\tlet mergeFileName = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst request = bent('https:' + resCC.url, 'POST', 'json', 200);\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tlet body = await request('', {\n\t\t\t\t\t\t\t\tmode: 'combine',\n\t\t\t\t\t\t\t\tinput: {\n\t\t\t\t\t\t\t\t\ts3: {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET']\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfiles: fileKeys,\n\t\t\t\t\t\t\t\toutputformat: 'pdf',\n\t\t\t\t\t\t\t\twait: true,\n\t\t\t\t\t\t\t\toutput: {\n\t\t\t\t\t\t\t\t\t's3': {\n\t\t\t\t\t\t\t\t\t\t'accesskeyid': this.serverConfig['AWSACCESSKEYID'],\n\t\t\t\t\t\t\t\t\t\t'secretaccesskey': this.serverConfig['AWSSECRETACCESSKEY'],\n\t\t\t\t\t\t\t\t\t\t'region': this.serverConfig['AWSREGION'],\n\t\t\t\t\t\t\t\t\t\t'bucket': this.serverConfig['AWSBUCKET'],\n\t\t\t\t\t\t\t\t\t\t'path': mergeFileName\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconverteroptions: {\n\t\t\t\t\t\t\t\t\t'resize': '612x792',\n\t\t\t\t\t\t\t\t\t'resizemode': 'scale',\n\t\t\t\t\t\t\t\t\t'resizeenlarge': null,\n\t\t\t\t\t\t\t\t\t'grayscale': null,\n\t\t\t\t\t\t\t\t\t'auto_orient': null,\n\t\t\t\t\t\t\t\t\t'strip_metatags': false,\n\t\t\t\t\t\t\t\t\t'density': 72,\n\t\t\t\t\t\t\t\t\t'rotate': null,\n\t\t\t\t\t\t\t\t\t'command': null\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tlet resFile: FileModel = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\t\t\tsize: body.output.size,\n\t\t\t\t\t\t\t\tkey: mergeFileName,\n\t\t\t\t\t\t\t\ttype: fileType ? fileType : '',\n\t\t\t\t\t\t\t\torder: -1\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tthis.callMethodInternal('insertDocument', 'files', resFile, (errUpFile, resUpFile) => {\n\t\t\t\t\t\t\t\tif (resUpFile) {\n\t\t\t\t\t\t\t\t\tresFile.status = 'Uploaded';\n\n\t\t\t\t\t\t\t\t\tresolve(resFile);\n\n\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('deleteFile', mergeFileName);\n\t\t\t\t\t\t\t\t\t}, 60000);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\treject(errUpFile);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch(error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, errCC => reject(errCC));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}"]}
@@ -38,15 +38,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  var worker_threads_1 = require("worker_threads");
40
40
  var fs = require('fs');
41
+ var pdf_lib_1 = require("pdf-lib");
41
42
  var jobQueue = [];
42
43
  var runningQueue = false;
43
44
  var pdfCnt = 0;
44
- console.log('Helper thread started', worker_threads_1.isMainThread);
45
- // if (!isMainThread) {
45
+ console.log('Helper thread started');
46
46
  worker_threads_1.parentPort.on('message', function (msg) {
47
47
  jobQueue.splice(0, 0, msg);
48
48
  });
49
- // }
50
49
  setInterval(function () { return __awaiter(void 0, void 0, void 0, function () {
51
50
  var job_1;
52
51
  return __generator(this, function (_a) {
@@ -66,12 +65,24 @@ setInterval(function () { return __awaiter(void 0, void 0, void 0, function () {
66
65
  runningQueue = false;
67
66
  });
68
67
  }
68
+ else if (job_1.method === 'mergePDFResolve') {
69
+ mergePDFResolve(job_1.params).then(function (res) {
70
+ job_1.result = res;
71
+ job_1.error = false;
72
+ worker_threads_1.parentPort.postMessage(job_1);
73
+ runningQueue = false;
74
+ }, function (err) {
75
+ job_1.result = err;
76
+ job_1.error = true;
77
+ worker_threads_1.parentPort.postMessage(job_1);
78
+ runningQueue = false;
79
+ });
80
+ }
69
81
  }
70
82
  return [2 /*return*/];
71
83
  });
72
84
  }); }, 1);
73
85
  function generatePDF(data) {
74
- console.log('Running generate PDF');
75
86
  var html = data[0];
76
87
  var fileName = data[1];
77
88
  var orientation = data[2] || 'portrait';
@@ -141,5 +152,100 @@ function generatePDF(data) {
141
152
  });
142
153
  });
143
154
  }
155
+ function mergePDFResolve(data) {
156
+ var _this = this;
157
+ var fileDatas = data[0];
158
+ return new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
159
+ var mergedPdf, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, b64PDF;
160
+ return __generator(this, function (_a) {
161
+ switch (_a.label) {
162
+ case 0: return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
163
+ case 1:
164
+ mergedPdf = _a.sent();
165
+ i = 0;
166
+ _a.label = 2;
167
+ case 2:
168
+ if (!(i < fileDatas.length)) return [3 /*break*/, 15];
169
+ fileData = fileDatas[i];
170
+ if (!fileData.startsWith('data:application/pdf;base64,')) return [3 /*break*/, 5];
171
+ return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileData)];
172
+ case 3:
173
+ pdf = _a.sent();
174
+ return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
175
+ case 4:
176
+ copiedPages = _a.sent();
177
+ copiedPages.forEach(function (page) {
178
+ mergedPdf.addPage(page);
179
+ });
180
+ return [3 /*break*/, 14];
181
+ case 5:
182
+ if (!(fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/'))) return [3 /*break*/, 9];
183
+ return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
184
+ case 6:
185
+ pdf = _a.sent();
186
+ return [4 /*yield*/, pdf.embedJpg(fileData)];
187
+ case 7:
188
+ img = _a.sent();
189
+ page = pdf.addPage();
190
+ imgDim = img.size();
191
+ if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {
192
+ imgDim = img.scaleToFit(page.getWidth(), page.getHeight());
193
+ }
194
+ img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);
195
+ page.drawImage(img, {
196
+ x: page.getWidth() / 2 - imgDim.width / 2,
197
+ y: page.getHeight() / 2 - imgDim.height / 2,
198
+ width: imgDim.width,
199
+ height: imgDim.height,
200
+ });
201
+ return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
202
+ case 8:
203
+ copiedPages = _a.sent();
204
+ copiedPages.forEach(function (page) {
205
+ mergedPdf.addPage(page);
206
+ });
207
+ return [3 /*break*/, 14];
208
+ case 9:
209
+ if (!fileData.startsWith('data:image/png;base64,iVBOR')) return [3 /*break*/, 13];
210
+ return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
211
+ case 10:
212
+ pdf = _a.sent();
213
+ return [4 /*yield*/, pdf.embedPng(fileData)];
214
+ case 11:
215
+ img = _a.sent();
216
+ page = pdf.addPage();
217
+ imgDim = img.size();
218
+ if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {
219
+ imgDim = img.scaleToFit(page.getWidth(), page.getHeight());
220
+ }
221
+ img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);
222
+ page.drawImage(img, {
223
+ x: page.getWidth() / 2 - imgDim.width / 2,
224
+ y: page.getHeight() / 2 - imgDim.height / 2,
225
+ width: imgDim.width,
226
+ height: imgDim.height,
227
+ });
228
+ return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
229
+ case 12:
230
+ copiedPages = _a.sent();
231
+ copiedPages.forEach(function (page) {
232
+ mergedPdf.addPage(page);
233
+ });
234
+ return [3 /*break*/, 14];
235
+ case 13:
236
+ console.log('Error - unsupported!!', fileData.slice(0, 60));
237
+ _a.label = 14;
238
+ case 14:
239
+ i++;
240
+ return [3 /*break*/, 2];
241
+ case 15: return [4 /*yield*/, mergedPdf.saveAsBase64({ dataUri: true })];
242
+ case 16:
243
+ b64PDF = _a.sent();
244
+ resolve(b64PDF);
245
+ return [2 /*return*/];
246
+ }
247
+ });
248
+ }); });
249
+ }
144
250
 
145
251
  //# sourceMappingURL=helper_thread.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/multi_threaded/helper_thread.ts"],"names":[],"mappings":"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","file":"helper_thread.js","sourcesContent":["import { parentPort, isMainThread } from 'worker_threads';\nlet fs = require('fs');\nimport { HelperThreadMessage } from '../managers/method.manager';\n\nlet jobQueue: HelperThreadMessage[] = [];\nlet runningQueue = false;\n\nlet pdfCnt = 0;\n\nconsole.log('Helper thread started', isMainThread);\n\n// if (!isMainThread) {\n parentPort.on('message', (msg: HelperThreadMessage) => {\n jobQueue.splice(0, 0, msg);\n });\n// }\n\nsetInterval(async () => {\n if (!runningQueue && jobQueue.length) {\n runningQueue = true;\n\n let job = jobQueue.pop();\n if (job.method === 'generatePDF') {\n generatePDF(job.params).then(res => {\n job.result = res;\n job.error = false;\n parentPort.postMessage(job);\n runningQueue = false;\n }, err => {\n job.result = err;\n job.error = true;\n parentPort.postMessage(job);\n runningQueue = false;\n });\n }\n }\n}, 1);\n\nfunction generatePDF(data: any[]) {\n console.log('Running generate PDF');\n \n let html = data[0];\n let fileName = data[1];\n let orientation = data[2] || 'portrait';\n let fontSize = data[3] || '8px';\n\n return new Promise((resolve, reject) => {\n let phantom = require('phantom');\n let phInstance = null;\n \n phantom.create().then(instance => {\n phInstance = instance;\n return instance.createPage();\n }).then(page => {\n let requestsArray = [];\n\n page.on('onResourceRequested', (requestData, networkRequest) => {\n requestsArray.push(requestData.id);\n });\n\n page.on('onResourceReceived', (response) => {\n if (response.stage === 'end') {\n let index = requestsArray.indexOf(response.id);\n requestsArray.splice(index, 1);\n }\n });\n\n page.property('paperSize', {\n format: 'letter',\n margin: '1cm',\n orientation: orientation,\n footer: {\n height: '1cm',\n contents: phInstance.callback((pageNum, numPages) => {\n return '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\n })\n }\n });\n page.property('content', `\n <head>\n <style>\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n }\n\n body {\n font-family: 'Dejavu Serif', serif;\n font-size: ` + (fontSize ? fontSize : '8px') + `;\n }\n\n .row {\n display: -webkit-flex;\n display: flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n }\n \n .page-break {\n page-break-before: always !important;\n margin-bottom: 1px;\n }\n\n .cell {\n box-sizing: border-box;\n padding : 2px;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .cell-no-padding {\n box-sizing: border-box;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .centered {\n -webkit-justify-content: center;\n -webkit-align-items: center;\n display: -webkit-flex;\n text-align: center;\n }\n\n .centered-left {\n -webkit-align-items: center;\n display: -webkit-flex;\n -webkit-justify-content: flex-start;\n }\n\n .centered-right {\n -webkit-justify-content: flex-end;\n -webkit-align-items: center;\n display: -webkit-flex;\n }\n \n .box {\n border: 1px solid black;\n margin: -1px 0px 0px -1px;\n }\n\n .boxNoBorder {\n margin: -1px 0px 0px -1px;\n }\n\n pre {\n white-space: pre-wrap; /* css-3 */\n white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n white-space: -pre-wrap; /* Opera 4-6 */\n white-space: -o-pre-wrap; /* Opera 7 */\n word-wrap: break-word; /* Internet Explorer 5.5+ */\n font-size: 12px;\n font-family: Open Sans; \n }\n </style>\n </head>\n <body>\n ` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n let tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n \n let interval = setInterval(() => {\n if (requestsArray.length === 0) {\n clearInterval(interval);\n \n page.render(tmpFileName, {\n format: 'pdf',\n quality: '100'\n }).then(() => {\n if (fs.existsSync(tmpFileName)) {\n fs.readFile(tmpFileName, (errRead, data) => {\n if (!errRead) {\n fs.unlinkSync(tmpFileName);\n resolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n }\n else {\n reject('No file');\n }\n \n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n else {\n reject('No tmp file');\n console.log('No tmp file ', tmpFileName);\n }\n }, err => {\n console.log(err);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n }, 1000);\n }, error => {\n reject(error);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n });\n}"]}
1
+ {"version":3,"sources":["../../src/multi_threaded/helper_thread.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA4C;AAC5C,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvB,mCAAsC;AAEtC,IAAI,QAAQ,GAA0B,EAAE,CAAC;AACzC,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAErC,2BAAU,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,GAAwB;IAC9C,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,WAAW,CAAC;;;QACR,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE;YAClC,YAAY,GAAG,IAAI,CAAC;YAEhB,QAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;YACzB,IAAI,KAAG,CAAC,MAAM,KAAK,aAAa,EAAE;gBAC9B,WAAW,CAAC,KAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG;oBAC5B,KAAG,CAAC,MAAM,GAAG,GAAG,CAAC;oBACjB,KAAG,CAAC,KAAK,GAAG,KAAK,CAAC;oBAClB,2BAAU,CAAC,WAAW,CAAC,KAAG,CAAC,CAAC;oBAC5B,YAAY,GAAG,KAAK,CAAC;gBACzB,CAAC,EAAE,UAAA,GAAG;oBACF,KAAG,CAAC,MAAM,GAAG,GAAG,CAAC;oBACjB,KAAG,CAAC,KAAK,GAAG,IAAI,CAAC;oBACjB,2BAAU,CAAC,WAAW,CAAC,KAAG,CAAC,CAAC;oBAC5B,YAAY,GAAG,KAAK,CAAC;gBACzB,CAAC,CAAC,CAAC;aACN;iBACI,IAAI,KAAG,CAAC,MAAM,KAAK,iBAAiB,EAAE;gBACvC,eAAe,CAAC,KAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG;oBAChC,KAAG,CAAC,MAAM,GAAG,GAAG,CAAC;oBACjB,KAAG,CAAC,KAAK,GAAG,KAAK,CAAC;oBAClB,2BAAU,CAAC,WAAW,CAAC,KAAG,CAAC,CAAC;oBAC5B,YAAY,GAAG,KAAK,CAAC;gBACzB,CAAC,EAAE,UAAA,GAAG;oBACF,KAAG,CAAC,MAAM,GAAG,GAAG,CAAC;oBACjB,KAAG,CAAC,KAAK,GAAG,IAAI,CAAC;oBACjB,2BAAU,CAAC,WAAW,CAAC,KAAG,CAAC,CAAC;oBAC5B,YAAY,GAAG,KAAK,CAAC;gBACzB,CAAC,CAAC,CAAC;aACN;SACJ;;;KACJ,EAAE,CAAC,CAAC,CAAC;AAEN,SAAS,WAAW,CAAC,IAAW;IAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAEhC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QAC/B,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAA,QAAQ;YAC1B,UAAU,GAAG,QAAQ,CAAC;YACtB,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;YACR,IAAI,aAAa,GAAG,EAAE,CAAC;YAEvB,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,UAAC,WAAW,EAAE,cAAc;gBACvD,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,UAAC,QAAQ;gBACnC,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,EAAE;oBAC1B,IAAI,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC/C,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAClC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACvB,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,KAAK;gBACb,WAAW,EAAE,WAAW;gBACxB,MAAM,EAAE;oBACJ,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAC,OAAO,EAAE,QAAQ;wBAC5C,OAAO,qDAAqD,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;oBAC3G,CAAC,CAAC;iBACL;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,60CAiCA,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,o6EAoE/D,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG,SAAS,CAAC,CAAC;YACpI,IAAI,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAE7E,IAAI,QAAQ,GAAG,WAAW,CAAC;gBACvB,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC5B,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAExB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;wBACrB,MAAM,EAAE,KAAK;wBACb,OAAO,EAAE,KAAK;qBACjB,CAAC,CAAC,IAAI,CAAC;wBACJ,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;4BAC5B,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAC,OAAO,EAAE,IAAI;gCACnC,IAAI,CAAC,OAAO,EAAE;oCACV,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;oCAC3B,OAAO,CAAC,8BAA8B,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;iCAClF;qCACI;oCACF,MAAM,CAAC,SAAS,CAAC,CAAC;iCACpB;gCAED,UAAU,CAAC,cAAa,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;4BACrD,CAAC,CAAC,CAAC;yBACN;6BACI;4BACD,MAAM,CAAC,aAAa,CAAC,CAAC;4BACtB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;yBAC5C;oBACL,CAAC,EAAE,UAAA,GAAG;wBACF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACjB,UAAU,CAAC,cAAa,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;iBACN;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC,EAAE,UAAA,KAAK;YACJ,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,UAAU,CAAC,cAAa,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,IAAW;IAApC,iBAiEC;IAhEG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,OAAO,IAAI,OAAO,CAAC,UAAO,OAAO,EAAE,MAAM;;;;wBACnB,qBAAM,qBAAW,CAAC,MAAM,EAAE,EAAA;;oBAAtC,SAAS,GAAG,SAA0B;oBAEnC,CAAC,GAAG,CAAC;;;yBAAE,CAAA,CAAC,GAAG,SAAS,CAAC,MAAM,CAAA;oBAC5B,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;yBACxB,QAAQ,CAAC,UAAU,CAAC,8BAA8B,CAAC,EAAnD,wBAAmD;oBACvC,qBAAM,qBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAA;;oBAAtC,GAAG,GAAG,SAAgC;oBACxB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,EAAA;;oBAAlE,WAAW,GAAG,SAAoD;oBACxE,WAAW,CAAC,OAAO,CAAC,UAAC,IAAI;wBACrB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC;;;yBAEE,CAAA,QAAQ,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAA,EAAvG,wBAAuG;oBAChG,qBAAM,qBAAW,CAAC,MAAM,EAAE,EAAA;;oBAAhC,GAAG,GAAG,SAA0B;oBAC1B,qBAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAA;;oBAAlC,GAAG,GAAG,SAA4B;oBAClC,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;oBACvB,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;oBACxB,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;wBACnE,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;qBAC9D;oBACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;wBAChB,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;wBACzC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;wBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACxB,CAAC,CAAC;oBACiB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,EAAA;;oBAAlE,WAAW,GAAG,SAAoD;oBACxE,WAAW,CAAC,OAAO,CAAC,UAAC,IAAI;wBACrB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC;;;yBAEE,QAAQ,CAAC,UAAU,CAAC,6BAA6B,CAAC,EAAlD,yBAAkD;oBAC3C,qBAAM,qBAAW,CAAC,MAAM,EAAE,EAAA;;oBAAhC,GAAG,GAAG,SAA0B;oBAC1B,qBAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAA;;oBAAlC,GAAG,GAAG,SAA4B;oBAClC,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;oBACvB,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;oBACxB,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE;wBACnE,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;qBAC9D;oBACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;oBAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;wBAChB,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;wBACzC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;wBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;qBACxB,CAAC,CAAC;oBACiB,qBAAM,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,EAAA;;oBAAlE,WAAW,GAAG,SAAoD;oBACxE,WAAW,CAAC,OAAO,CAAC,UAAC,IAAI;wBACrB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC5B,CAAC,CAAC,CAAC;;;oBAIH,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;;;oBAnD9B,CAAC,EAAE,CAAA;;yBAuD1B,qBAAM,SAAS,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAA;;oBAAxD,MAAM,GAAG,SAA+C;oBAE9D,OAAO,CAAC,MAAM,CAAC,CAAC;;;;SACnB,CAAC,CAAC;AACP,CAAC","file":"helper_thread.js","sourcesContent":["import { parentPort } from 'worker_threads';\nlet fs = require('fs');\nimport { HelperThreadMessage } from '../managers/method.manager';\nimport { PDFDocument } from 'pdf-lib';\n\nlet jobQueue: HelperThreadMessage[] = [];\nlet runningQueue = false;\n\nlet pdfCnt = 0;\n\nconsole.log('Helper thread started');\n\nparentPort.on('message', (msg: HelperThreadMessage) => {\n jobQueue.splice(0, 0, msg);\n});\n\nsetInterval(async () => {\n if (!runningQueue && jobQueue.length) {\n runningQueue = true;\n\n let job = jobQueue.pop();\n if (job.method === 'generatePDF') {\n generatePDF(job.params).then(res => {\n job.result = res;\n job.error = false;\n parentPort.postMessage(job);\n runningQueue = false;\n }, err => {\n job.result = err;\n job.error = true;\n parentPort.postMessage(job);\n runningQueue = false;\n });\n }\n else if (job.method === 'mergePDFResolve') {\n mergePDFResolve(job.params).then(res => {\n job.result = res;\n job.error = false;\n parentPort.postMessage(job);\n runningQueue = false;\n }, err => {\n job.result = err;\n job.error = true;\n parentPort.postMessage(job);\n runningQueue = false;\n });\n }\n }\n}, 1);\n\nfunction generatePDF(data: any[]) {\n let html = data[0];\n let fileName = data[1];\n let orientation = data[2] || 'portrait';\n let fontSize = data[3] || '8px';\n\n return new Promise((resolve, reject) => {\n let phantom = require('phantom');\n let phInstance = null;\n \n phantom.create().then(instance => {\n phInstance = instance;\n return instance.createPage();\n }).then(page => {\n let requestsArray = [];\n\n page.on('onResourceRequested', (requestData, networkRequest) => {\n requestsArray.push(requestData.id);\n });\n\n page.on('onResourceReceived', (response) => {\n if (response.stage === 'end') {\n let index = requestsArray.indexOf(response.id);\n requestsArray.splice(index, 1);\n }\n });\n\n page.property('paperSize', {\n format: 'letter',\n margin: '1cm',\n orientation: orientation,\n footer: {\n height: '1cm',\n contents: phInstance.callback((pageNum, numPages) => {\n return '<span style=\\'float:right; font-size: 12px;\\'>Page ' + pageNum + ' of ' + numPages + '</span>';\n })\n }\n });\n page.property('content', `\n <head>\n <style>\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: normal;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: normal;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-Italic.ttf\");\n }\n\n @font-face {\n font-family: 'Dejavu Serif', serif;\n font-style: italic;\n font-weight: bold;\n src: url(\"/usr/share/fonts/dejavu/DejaVuSerif-BoldItalic.ttf\");\n }\n\n body {\n font-family: 'Dejavu Serif', serif;\n font-size: ` + (fontSize ? fontSize : '8px') + `;\n }\n\n .row {\n display: -webkit-flex;\n display: flex;\n flex-wrap: wrap;\n -webkit-flex-wrap: wrap;\n }\n \n .page-break {\n page-break-before: always !important;\n margin-bottom: 1px;\n }\n\n .cell {\n box-sizing: border-box;\n padding : 2px;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .cell-no-padding {\n box-sizing: border-box;\n -webkit-flex: 1;\n word-wrap: break-word;\n }\n\n .centered {\n -webkit-justify-content: center;\n -webkit-align-items: center;\n display: -webkit-flex;\n text-align: center;\n }\n\n .centered-left {\n -webkit-align-items: center;\n display: -webkit-flex;\n -webkit-justify-content: flex-start;\n }\n\n .centered-right {\n -webkit-justify-content: flex-end;\n -webkit-align-items: center;\n display: -webkit-flex;\n }\n \n .box {\n border: 1px solid black;\n margin: -1px 0px 0px -1px;\n }\n\n .boxNoBorder {\n margin: -1px 0px 0px -1px;\n }\n\n pre {\n white-space: pre-wrap; /* css-3 */\n white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n white-space: -pre-wrap; /* Opera 4-6 */\n white-space: -o-pre-wrap; /* Opera 7 */\n word-wrap: break-word; /* Internet Explorer 5.5+ */\n font-size: 12px;\n font-family: Open Sans; \n }\n </style>\n </head>\n <body>\n ` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>');\n let tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/\\W/g), '');\n \n let interval = setInterval(() => {\n if (requestsArray.length === 0) {\n clearInterval(interval);\n \n page.render(tmpFileName, {\n format: 'pdf',\n quality: '100'\n }).then(() => {\n if (fs.existsSync(tmpFileName)) {\n fs.readFile(tmpFileName, (errRead, data) => {\n if (!errRead) {\n fs.unlinkSync(tmpFileName);\n resolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\n }\n else {\n reject('No file');\n }\n \n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n else {\n reject('No tmp file');\n console.log('No tmp file ', tmpFileName);\n }\n }, err => {\n console.log(err);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n }\n }, 1000);\n }, error => {\n reject(error);\n setTimeout(function() { phInstance.exit(); }, 0);\n });\n });\n}\n\nfunction mergePDFResolve(data: any[]) {\n let fileDatas = data[0];\n\n return new Promise(async (resolve, reject) => {\n const mergedPdf = await PDFDocument.create();\n\n for (let i = 0; i < fileDatas.length; i++) {\n let fileData = fileDatas[i];\n if (fileData.startsWith('data:application/pdf;base64,')) {\n const pdf = await PDFDocument.load(fileData);\n const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n copiedPages.forEach((page) => {\n mergedPdf.addPage(page);\n });\n }\n else if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n const pdf = await PDFDocument.create();\n const img = await pdf.embedJpg(fileData);\n const page = pdf.addPage();\n let imgDim = img.size();\n if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n imgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n }\n img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n page.drawImage(img, {\n x: page.getWidth() / 2 - imgDim.width / 2,\n y: page.getHeight() / 2 - imgDim.height / 2,\n width: imgDim.width,\n height: imgDim.height,\n });\n const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n copiedPages.forEach((page) => {\n mergedPdf.addPage(page);\n });\n }\n else if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n const pdf = await PDFDocument.create();\n const img = await pdf.embedPng(fileData);\n const page = pdf.addPage();\n let imgDim = img.size();\n if (imgDim.width > page.getWidth() || imgDim.height > page.getWidth()) {\n imgDim = img.scaleToFit(page.getWidth(), page.getHeight());\n }\n img.scaleToFit(page.getWidth() / 2, page.getHeight() / 2);\n page.drawImage(img, {\n x: page.getWidth() / 2 - imgDim.width / 2,\n y: page.getHeight() / 2 - imgDim.height / 2,\n width: imgDim.width,\n height: imgDim.height,\n });\n const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n copiedPages.forEach((page) => {\n mergedPdf.addPage(page);\n });\n }\n \n else {\n console.log('Error - unsupported!!', fileData.slice(0, 60));\n }\n }\n\n const b64PDF = await mergedPdf.saveAsBase64({ dataUri: true });\n\n resolve(b64PDF);\n });\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resolveio/server-lib",
3
- "version": "12.0.6",
3
+ "version": "12.0.8",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "package": "npm run build-prod && npm pack ./dist",
package/public_api.d.ts CHANGED
@@ -57,4 +57,3 @@ export * from './models/user-guide.model';
57
57
  export * from './models/user.model';
58
58
  export * from './util/common';
59
59
  export * from './managers/mongo.manager';
60
- export * from './multi_threaded/helper_thread';
package/public_api.js CHANGED
@@ -69,6 +69,5 @@ __exportStar(require("./models/user-guide.model"), exports);
69
69
  __exportStar(require("./models/user.model"), exports);
70
70
  __exportStar(require("./util/common"), exports);
71
71
  __exportStar(require("./managers/mongo.manager"), exports);
72
- __exportStar(require("./multi_threaded/helper_thread"), exports);
73
72
 
74
73
  //# sourceMappingURL=public_api.js.map
package/public_api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/public_api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAoD;AACpD,uEAAqD;AACrD,mEAAiD;AACjD,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,0EAAwD;AACxD,gEAA8C;AAC9C,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,+DAA6C;AAC7C,2EAAyD;AACzD,2EAAyD;AACzD,uEAAqD;AACrD,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,kFAAgE;AAChE,iFAA+D;AAC/D,sEAAoD;AACpD,sEAAoD;AACpD,gEAA8C;AAC9C,4DAA0C;AAC1C,6DAA2C;AAC3C,yEAAuD;AACvD,qEAAmD;AACnD,yDAAuC;AACvC,kEAAgD;AAChD,0DAAwC;AACxC,wDAAsC;AACtC,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,sDAAoC;AACpC,oEAAkD;AAClD,kEAAgD;AAChD,qDAAmC;AACnC,iEAA+C;AAC/C,iEAA+C;AAC/C,wDAAsC;AACtC,6DAA2C;AAC3C,gEAA8C;AAC9C,+DAA6C;AAC7C,8DAA4C;AAC5C,4DAA0C;AAC1C,4DAA0C;AAC1C,wEAAsD;AACtD,uEAAqD;AACrD,gEAA8C;AAC9C,mEAAiD;AACjD,iEAA+C;AAC/C,8DAA4C;AAC5C,gEAA8C;AAC9C,4DAA0C;AAC1C,4DAA0C;AAC1C,sDAAoC;AACpC,gDAA8B;AAC9B,2DAAyC;AACzC,iEAA+C","file":"public_api.js","sourcesContent":["export * from './collections/app-status.collection';\nexport * from './collections/app-version.collection';\nexport * from './collections/counter.collection';\nexport * from './collections/cron-job-history.collection';\nexport * from './collections/cron-job.collection';\nexport * from './collections/email-history.collection';\nexport * from './collections/email-verified.collection';\nexport * from './collections/file.collection';\nexport * from './collections/flag.collection';\nexport * from './collections/log-method-latency.collection';\nexport * from './collections/log-subscription.collection';\nexport * from './collections/log.collection';\nexport * from './collections/logged-in-users.collection';\nexport * from './collections/method-response.collection';\nexport * from './collections/monitor-cpu.collection';\nexport * from './collections/monitor-memory.collection';\nexport * from './collections/monitor-mongo.collection';\nexport * from './collections/notification.collection';\nexport * from './collections/report-builder-library.collection';\nexport * from './collections/report-builder-report.collection';\nexport * from './collections/user-group.collection';\nexport * from './collections/user-guide.collection';\nexport * from './collections/user.collection';\nexport * from './models/app-status.model';\nexport * from './models/app-version.model';\nexport * from './models/billing-logged-in-users.model';\nexport * from './models/collection-document.model';\nexport * from './models/counter.model';\nexport * from './models/cron-job-history.model';\nexport * from './models/cron-job.model';\nexport * from './models/dialog.model';\nexport * from './models/email-history.model';\nexport * from './models/email-verified.model';\nexport * from './models/file.model';\nexport * from './models/flag.model';\nexport * from './models/log-method-latency.model';\nexport * from './models/log-subscription.model';\nexport * from './models/log.model';\nexport * from './models/logged-in-users.model';\nexport * from './models/method-response.model';\nexport * from './models/method.model';\nexport * from './models/monitor-cpu.model';\nexport * from './models/monitor-memory.model';\nexport * from './models/monitor-mongo.model';\nexport * from './models/notification.model';\nexport * from './models/pagination.model';\nexport * from './models/permission.model';\nexport * from './models/report-builder-library.model';\nexport * from './models/report-builder-report.model';\nexport * from './models/report-builder.model';\nexport * from './models/select-data-label.model';\nexport * from './models/server-response.model';\nexport * from './models/subscription.model';\nexport * from './models/support-ticket.model';\nexport * from './models/user-group.model';\nexport * from './models/user-guide.model';\nexport * from './models/user.model';\nexport * from './util/common';\nexport * from './managers/mongo.manager';\nexport * from './multi_threaded/helper_thread';"]}
1
+ {"version":3,"sources":["../../src/public_api.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sEAAoD;AACpD,uEAAqD;AACrD,mEAAiD;AACjD,4EAA0D;AAC1D,oEAAkD;AAClD,yEAAuD;AACvD,0EAAwD;AACxD,gEAA8C;AAC9C,gEAA8C;AAC9C,8EAA4D;AAC5D,4EAA0D;AAC1D,+DAA6C;AAC7C,2EAAyD;AACzD,2EAAyD;AACzD,uEAAqD;AACrD,0EAAwD;AACxD,yEAAuD;AACvD,wEAAsD;AACtD,kFAAgE;AAChE,iFAA+D;AAC/D,sEAAoD;AACpD,sEAAoD;AACpD,gEAA8C;AAC9C,4DAA0C;AAC1C,6DAA2C;AAC3C,yEAAuD;AACvD,qEAAmD;AACnD,yDAAuC;AACvC,kEAAgD;AAChD,0DAAwC;AACxC,wDAAsC;AACtC,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,sDAAoC;AACpC,oEAAkD;AAClD,kEAAgD;AAChD,qDAAmC;AACnC,iEAA+C;AAC/C,iEAA+C;AAC/C,wDAAsC;AACtC,6DAA2C;AAC3C,gEAA8C;AAC9C,+DAA6C;AAC7C,8DAA4C;AAC5C,4DAA0C;AAC1C,4DAA0C;AAC1C,wEAAsD;AACtD,uEAAqD;AACrD,gEAA8C;AAC9C,mEAAiD;AACjD,iEAA+C;AAC/C,8DAA4C;AAC5C,gEAA8C;AAC9C,4DAA0C;AAC1C,4DAA0C;AAC1C,sDAAoC;AACpC,gDAA8B;AAC9B,2DAAyC","file":"public_api.js","sourcesContent":["export * from './collections/app-status.collection';\nexport * from './collections/app-version.collection';\nexport * from './collections/counter.collection';\nexport * from './collections/cron-job-history.collection';\nexport * from './collections/cron-job.collection';\nexport * from './collections/email-history.collection';\nexport * from './collections/email-verified.collection';\nexport * from './collections/file.collection';\nexport * from './collections/flag.collection';\nexport * from './collections/log-method-latency.collection';\nexport * from './collections/log-subscription.collection';\nexport * from './collections/log.collection';\nexport * from './collections/logged-in-users.collection';\nexport * from './collections/method-response.collection';\nexport * from './collections/monitor-cpu.collection';\nexport * from './collections/monitor-memory.collection';\nexport * from './collections/monitor-mongo.collection';\nexport * from './collections/notification.collection';\nexport * from './collections/report-builder-library.collection';\nexport * from './collections/report-builder-report.collection';\nexport * from './collections/user-group.collection';\nexport * from './collections/user-guide.collection';\nexport * from './collections/user.collection';\nexport * from './models/app-status.model';\nexport * from './models/app-version.model';\nexport * from './models/billing-logged-in-users.model';\nexport * from './models/collection-document.model';\nexport * from './models/counter.model';\nexport * from './models/cron-job-history.model';\nexport * from './models/cron-job.model';\nexport * from './models/dialog.model';\nexport * from './models/email-history.model';\nexport * from './models/email-verified.model';\nexport * from './models/file.model';\nexport * from './models/flag.model';\nexport * from './models/log-method-latency.model';\nexport * from './models/log-subscription.model';\nexport * from './models/log.model';\nexport * from './models/logged-in-users.model';\nexport * from './models/method-response.model';\nexport * from './models/method.model';\nexport * from './models/monitor-cpu.model';\nexport * from './models/monitor-memory.model';\nexport * from './models/monitor-mongo.model';\nexport * from './models/notification.model';\nexport * from './models/pagination.model';\nexport * from './models/permission.model';\nexport * from './models/report-builder-library.model';\nexport * from './models/report-builder-report.model';\nexport * from './models/report-builder.model';\nexport * from './models/select-data-label.model';\nexport * from './models/server-response.model';\nexport * from './models/subscription.model';\nexport * from './models/support-ticket.model';\nexport * from './models/user-group.model';\nexport * from './models/user-guide.model';\nexport * from './models/user.model';\nexport * from './util/common';\nexport * from './managers/mongo.manager';"]}