@resolveio/server-lib 20.12.54 → 20.12.55
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/aws.js +124 -34
- package/methods/aws.js.map +1 -1
- package/methods/pdf.js +113 -92
- package/methods/pdf.js.map +1 -1
- package/methods.ts +3 -0
- package/package.json +1 -1
package/methods/aws.js
CHANGED
|
@@ -152,6 +152,96 @@ function loadAWSMethods(methodManager) {
|
|
|
152
152
|
});
|
|
153
153
|
}
|
|
154
154
|
},
|
|
155
|
+
uploadPDFBufferAndSave: {
|
|
156
|
+
check: new simpl_schema_1.default({
|
|
157
|
+
fileName: {
|
|
158
|
+
type: String
|
|
159
|
+
},
|
|
160
|
+
fileDataBuffer: {
|
|
161
|
+
type: Buffer
|
|
162
|
+
},
|
|
163
|
+
fileSize: {
|
|
164
|
+
type: Number
|
|
165
|
+
},
|
|
166
|
+
fileOrder: {
|
|
167
|
+
type: Number
|
|
168
|
+
},
|
|
169
|
+
fileType: {
|
|
170
|
+
type: String
|
|
171
|
+
}
|
|
172
|
+
}),
|
|
173
|
+
// eslint-disable-next-line no-unused-vars
|
|
174
|
+
function: function (fileName, fileDataBuffer, fileSize, fileOrder, fileType) {
|
|
175
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
176
|
+
var key, s3, maxRetries, attempt, _loop_2, state_2;
|
|
177
|
+
return __generator(this, function (_a) {
|
|
178
|
+
switch (_a.label) {
|
|
179
|
+
case 0:
|
|
180
|
+
if (!fileName) {
|
|
181
|
+
throw new Error("Invalid File Name provided");
|
|
182
|
+
}
|
|
183
|
+
key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;
|
|
184
|
+
s3 = this.getAWS().s3();
|
|
185
|
+
maxRetries = 3;
|
|
186
|
+
attempt = 0;
|
|
187
|
+
_loop_2 = function () {
|
|
188
|
+
var res, err_2, backoff_2;
|
|
189
|
+
return __generator(this, function (_b) {
|
|
190
|
+
switch (_b.label) {
|
|
191
|
+
case 0:
|
|
192
|
+
_b.trys.push([0, 2, , 6]);
|
|
193
|
+
return [4 /*yield*/, s3.putObject({
|
|
194
|
+
Bucket: process.env.AWS_S3_BUCKET,
|
|
195
|
+
Key: key,
|
|
196
|
+
Body: fileDataBuffer,
|
|
197
|
+
ACL: 'private',
|
|
198
|
+
ContentType: 'application/pdf',
|
|
199
|
+
ContentDisposition: 'inline'
|
|
200
|
+
})];
|
|
201
|
+
case 1:
|
|
202
|
+
res = _b.sent();
|
|
203
|
+
if (res) {
|
|
204
|
+
return [2 /*return*/, { value: file_collection_1.Files.create({
|
|
205
|
+
_id: (0, common_1.objectIdHexString)(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType
|
|
206
|
+
}) }];
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
return [2 /*return*/, { value: null }];
|
|
210
|
+
}
|
|
211
|
+
return [3 /*break*/, 6];
|
|
212
|
+
case 2:
|
|
213
|
+
err_2 = _b.sent();
|
|
214
|
+
attempt++;
|
|
215
|
+
if (!(attempt <= maxRetries)) return [3 /*break*/, 4];
|
|
216
|
+
backoff_2 = Math.pow(2, attempt) * 1000;
|
|
217
|
+
console.warn("Attempt ".concat(attempt, " failed. Retrying in ").concat(backoff_2 / 1000, " seconds..."));
|
|
218
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
219
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, backoff_2); })];
|
|
220
|
+
case 3:
|
|
221
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
222
|
+
_b.sent();
|
|
223
|
+
return [3 /*break*/, 5];
|
|
224
|
+
case 4: throw new Error("Error in AWS Upload PDF Buffer And Save: Failed to upload after ".concat(maxRetries, " attempts: ").concat(err_2.message));
|
|
225
|
+
case 5: return [3 /*break*/, 6];
|
|
226
|
+
case 6: return [2 /*return*/];
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
_a.label = 1;
|
|
231
|
+
case 1:
|
|
232
|
+
if (!(attempt <= maxRetries)) return [3 /*break*/, 3];
|
|
233
|
+
return [5 /*yield**/, _loop_2()];
|
|
234
|
+
case 2:
|
|
235
|
+
state_2 = _a.sent();
|
|
236
|
+
if (typeof state_2 === "object")
|
|
237
|
+
return [2 /*return*/, state_2.value];
|
|
238
|
+
return [3 /*break*/, 1];
|
|
239
|
+
case 3: return [2 /*return*/, null];
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
},
|
|
155
245
|
uploadNonPDFFileAndSave: {
|
|
156
246
|
check: new simpl_schema_1.default({
|
|
157
247
|
fileName: {
|
|
@@ -172,7 +262,7 @@ function loadAWSMethods(methodManager) {
|
|
|
172
262
|
}),
|
|
173
263
|
function: function (fileName, fileData, fileSize, fileOrder, fileType) {
|
|
174
264
|
return __awaiter(this, void 0, void 0, function () {
|
|
175
|
-
var key, s3, res,
|
|
265
|
+
var key, s3, res, err_3;
|
|
176
266
|
return __generator(this, function (_a) {
|
|
177
267
|
switch (_a.label) {
|
|
178
268
|
case 0:
|
|
@@ -204,9 +294,9 @@ function loadAWSMethods(methodManager) {
|
|
|
204
294
|
}
|
|
205
295
|
return [3 /*break*/, 4];
|
|
206
296
|
case 3:
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
throw
|
|
297
|
+
err_3 = _a.sent();
|
|
298
|
+
err_3.mesage = 'Error In AWS Upload Non PDF File And Save: ' + err_3.mesage;
|
|
299
|
+
throw err_3;
|
|
210
300
|
case 4: return [2 /*return*/];
|
|
211
301
|
}
|
|
212
302
|
});
|
|
@@ -233,7 +323,7 @@ function loadAWSMethods(methodManager) {
|
|
|
233
323
|
}),
|
|
234
324
|
function: function (fileName, fileDataBuffer, fileSize, fileOrder, fileType) {
|
|
235
325
|
return __awaiter(this, void 0, void 0, function () {
|
|
236
|
-
var key, s3, res,
|
|
326
|
+
var key, s3, res, err_4;
|
|
237
327
|
return __generator(this, function (_a) {
|
|
238
328
|
switch (_a.label) {
|
|
239
329
|
case 0:
|
|
@@ -265,9 +355,9 @@ function loadAWSMethods(methodManager) {
|
|
|
265
355
|
}
|
|
266
356
|
return [3 /*break*/, 4];
|
|
267
357
|
case 3:
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
throw
|
|
358
|
+
err_4 = _a.sent();
|
|
359
|
+
err_4.mesage = 'Error In AWS Upload Non PDF Buffer And Save: ' + err_4.mesage;
|
|
360
|
+
throw err_4;
|
|
271
361
|
case 4: return [2 /*return*/];
|
|
272
362
|
}
|
|
273
363
|
});
|
|
@@ -291,7 +381,7 @@ function loadAWSMethods(methodManager) {
|
|
|
291
381
|
}),
|
|
292
382
|
function: function (fileName, fileData, fileOrder, fileType) {
|
|
293
383
|
return __awaiter(this, void 0, void 0, function () {
|
|
294
|
-
var key, s3, res,
|
|
384
|
+
var key, s3, res, err_5;
|
|
295
385
|
return __generator(this, function (_a) {
|
|
296
386
|
switch (_a.label) {
|
|
297
387
|
case 0:
|
|
@@ -323,9 +413,9 @@ function loadAWSMethods(methodManager) {
|
|
|
323
413
|
}
|
|
324
414
|
return [3 /*break*/, 4];
|
|
325
415
|
case 3:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
throw
|
|
416
|
+
err_5 = _a.sent();
|
|
417
|
+
err_5.mesage = 'Error In AWS Upload Non PDF Stream And Save: ' + err_5.mesage;
|
|
418
|
+
throw err_5;
|
|
329
419
|
case 4: return [2 /*return*/];
|
|
330
420
|
}
|
|
331
421
|
});
|
|
@@ -343,7 +433,7 @@ function loadAWSMethods(methodManager) {
|
|
|
343
433
|
}),
|
|
344
434
|
function: function (keys) {
|
|
345
435
|
return __awaiter(this, void 0, void 0, function () {
|
|
346
|
-
var files, deleteCnt, files_1, files_1_1, file, s3, res,
|
|
436
|
+
var files, deleteCnt, files_1, files_1_1, file, s3, res, err_6, e_1_1;
|
|
347
437
|
var e_1, _a;
|
|
348
438
|
return __generator(this, function (_b) {
|
|
349
439
|
switch (_b.label) {
|
|
@@ -384,9 +474,9 @@ function loadAWSMethods(methodManager) {
|
|
|
384
474
|
}
|
|
385
475
|
return [3 /*break*/, 8];
|
|
386
476
|
case 7:
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
throw
|
|
477
|
+
err_6 = _b.sent();
|
|
478
|
+
err_6.mesage = 'Error In AWS Delete Files: ' + err_6.mesage;
|
|
479
|
+
throw err_6;
|
|
390
480
|
case 8:
|
|
391
481
|
files_1_1 = files_1.next();
|
|
392
482
|
return [3 /*break*/, 3];
|
|
@@ -415,7 +505,7 @@ function loadAWSMethods(methodManager) {
|
|
|
415
505
|
}),
|
|
416
506
|
function: function (key) {
|
|
417
507
|
return __awaiter(this, void 0, void 0, function () {
|
|
418
|
-
var file,
|
|
508
|
+
var file, err_7, s3, res, err_8;
|
|
419
509
|
return __generator(this, function (_a) {
|
|
420
510
|
switch (_a.label) {
|
|
421
511
|
case 0: return [4 /*yield*/, file_collection_1.Files.findOne({ key: key })];
|
|
@@ -430,9 +520,9 @@ function loadAWSMethods(methodManager) {
|
|
|
430
520
|
_a.sent();
|
|
431
521
|
return [3 /*break*/, 5];
|
|
432
522
|
case 4:
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
throw
|
|
523
|
+
err_7 = _a.sent();
|
|
524
|
+
err_7.mesage = 'Error In AWS Delete File (Resolve Side): ' + err_7.mesage;
|
|
525
|
+
throw err_7;
|
|
436
526
|
case 5:
|
|
437
527
|
s3 = this.getAWS().s3();
|
|
438
528
|
_a.label = 6;
|
|
@@ -446,9 +536,9 @@ function loadAWSMethods(methodManager) {
|
|
|
446
536
|
res = _a.sent();
|
|
447
537
|
return [2 /*return*/, res];
|
|
448
538
|
case 8:
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
throw
|
|
539
|
+
err_8 = _a.sent();
|
|
540
|
+
err_8.mesage = 'Error In AWS Delete File (AWS Side): ' + err_8.mesage;
|
|
541
|
+
throw err_8;
|
|
452
542
|
case 9: return [2 /*return*/];
|
|
453
543
|
}
|
|
454
544
|
});
|
|
@@ -463,7 +553,7 @@ function loadAWSMethods(methodManager) {
|
|
|
463
553
|
}),
|
|
464
554
|
function: function (id_file) {
|
|
465
555
|
return __awaiter(this, void 0, void 0, function () {
|
|
466
|
-
var file,
|
|
556
|
+
var file, err_9, s3, res, err_10;
|
|
467
557
|
return __generator(this, function (_a) {
|
|
468
558
|
switch (_a.label) {
|
|
469
559
|
case 0: return [4 /*yield*/, file_collection_1.Files.findOne({ _id: id_file })];
|
|
@@ -480,9 +570,9 @@ function loadAWSMethods(methodManager) {
|
|
|
480
570
|
_a.sent();
|
|
481
571
|
return [3 /*break*/, 5];
|
|
482
572
|
case 4:
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
throw
|
|
573
|
+
err_9 = _a.sent();
|
|
574
|
+
err_9.mesage = 'Error In AWS Delete File With ID (Resolve Side): ' + err_9.mesage;
|
|
575
|
+
throw err_9;
|
|
486
576
|
case 5:
|
|
487
577
|
s3 = this.getAWS().s3();
|
|
488
578
|
_a.label = 6;
|
|
@@ -496,9 +586,9 @@ function loadAWSMethods(methodManager) {
|
|
|
496
586
|
res = _a.sent();
|
|
497
587
|
return [2 /*return*/, res];
|
|
498
588
|
case 8:
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
throw
|
|
589
|
+
err_10 = _a.sent();
|
|
590
|
+
err_10.mesage = 'Error In AWS Delete File With ID (AWS Side): ' + err_10.mesage;
|
|
591
|
+
throw err_10;
|
|
502
592
|
case 9: return [2 /*return*/];
|
|
503
593
|
}
|
|
504
594
|
});
|
|
@@ -702,7 +792,7 @@ function loadAWSMethods(methodManager) {
|
|
|
702
792
|
}),
|
|
703
793
|
function: function (id_file, email, additional_message) {
|
|
704
794
|
return __awaiter(this, void 0, void 0, function () {
|
|
705
|
-
var file, resPDF, emailMessage, emailMessage,
|
|
795
|
+
var file, resPDF, emailMessage, emailMessage, err_11;
|
|
706
796
|
return __generator(this, function (_a) {
|
|
707
797
|
switch (_a.label) {
|
|
708
798
|
case 0: return [4 /*yield*/, file_collection_1.Files.findById(id_file)];
|
|
@@ -737,9 +827,9 @@ function loadAWSMethods(methodManager) {
|
|
|
737
827
|
case 8: throw new Error('Error in AWS Email File: Could not get file URL');
|
|
738
828
|
case 9: return [3 /*break*/, 11];
|
|
739
829
|
case 10:
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
throw
|
|
830
|
+
err_11 = _a.sent();
|
|
831
|
+
err_11.mesage = 'Error In AWS Email File: ' + err_11.mesage;
|
|
832
|
+
throw err_11;
|
|
743
833
|
case 11: return [2 /*return*/];
|
|
744
834
|
}
|
|
745
835
|
});
|
package/methods/aws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/aws.ts"],"names":[],"mappings":"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","file":"aws.js","sourcesContent":["import { GetObjectCommand } from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport axios from 'axios';\nimport SimpleSchema from 'simpl-schema';\nimport { Files } from '../collections/file.collection';\nimport { AWS, MethodManager } from '../managers/method.manager';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\nlet fs = require('fs');\nlet pdfCnt = 1000000;\n\nexport function loadAWSMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tuploadFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileData: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileSize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileOrder: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcompress: {\n\t\t\t\t\ttype: Boolean\n\t\t\t\t}\n\t\t\t}),\n\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\tfunction: async function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string, compress: Boolean) {\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\tconst maxRetries = 3;\n\t\t\t\tlet attempt = 0;\n\n\t\t\t\twhile (attempt <= maxRetries) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET,\n\t\t\t\t\t\t\tKey: key,\n\t\t\t\t\t\t\tBody: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), \n\t\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\t\tContentType: fileData.split(',')[0].split(':')[1].split(';')[0], \n\t\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\treturn Files.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\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\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tattempt++;\n\t\t\t\t\t\tif (attempt <= maxRetries) {\n\t\t\t\t\t\t\tconst backoff = Math.pow(2, attempt) * 1000;\n\t\t\t\t\t\t\tconsole.warn(`Attempt ${attempt} failed. Retrying in ${backoff / 1000} seconds...`);\n\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, backoff));\n\t\t\t\t\t\t} \n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthrow new Error(`Error in AWS Upload File And Save: Failed to upload after ${maxRetries} attempts: ${err.message}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tuploadNonPDFFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: async function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key, \n\t\t\t\t\t\tBody: Buffer.from(fileData), \n\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\tContentType: 'application/gzip', \n\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t});\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\treturn Files.create({\t\n\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\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\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Upload Non PDF File And Save: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\t\n\t\t},\n\t\tuploadNonPDFBufferAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileDataBuffer: {\t\n\t\t\t\t\ttype: Buffer\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: async function(fileName: string, fileDataBuffer, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\t\t\t\t\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key, \n\t\t\t\t\t\tBody: fileDataBuffer, \n\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\tContentType: 'application/gzip', \n\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t});\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\treturn Files.create({\t\n\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t});\n\t\t\t\t\t}\t\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Upload Non PDF Buffer And Save: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\t\n\t\t},\n\t\tuploadNonPDFStreamAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: async function(fileName: string, fileData: string, fileOrder: number, fileType: string) {\t\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\t\t\t\t\t\t\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key, \n\t\t\t\t\t\tBody: fs.createReadStream(fileData), \n\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\tContentType: 'application/gzip', \n\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t});\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\treturn Files.create({\t\n\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: 1, key: key, order: fileOrder, type: fileType\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\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Upload Non PDF Stream And Save: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\t\n\t\t},\n\t\tdeleteFiles: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(keys: string[]) {\n\t\t\t\tif (!Array.isArray(keys) || keys.length === 0) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tlet files = await Files.find({key: {$in: keys}});\n\t\n\t\t\t\tlet deleteCnt = files.length;\n\t\n\t\t\t\tfor (let file of files) {\n\t\t\t\t\tawait Files.deleteOne({_id: file._id});\n\t\t\t\t\t\n\t\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet res = await s3.deleteObject({\n\t\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\t\tKey: file.key\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\tdeleteCnt--;\n\t\t\t\t\t\t\tif (!deleteCnt) {\n\t\t\t\t\t\t\t\treturn files.length;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.mesage = 'Error In AWS Delete Files: ' + err.mesage;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\tdeleteFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(key: string) {\t\t\n\t\t\t\tlet file = await Files.findOne({key: key});\n\t\n\t\t\t\tif (file) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait Files.deleteOne({_id: file._id});\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.mesage = 'Error In AWS Delete File (Resolve Side): ' + err.mesage;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.deleteObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET,\n\t\t\t\t\t\tKey: key\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Delete File (AWS Side): ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdeleteFileWithId: {\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}),\n\t\t\tfunction: async function(id_file: string) {\n\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\n\t\t\t\tif (!file) {\n\t\t\t\t\tthrow new Error('Error in AWS Delete File With ID: Could not find file');\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait Files.deleteOne({_id: file._id});\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Delete File With ID (Resolve Side): ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.deleteObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET,\n\t\t\t\t\t\tKey: file.key\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Delete File With ID (AWS Side): ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlsAndFilesWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tids: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'ids.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(ids: string[], expires: number) {\n\t\t\t\tlet res = [];\n\n\t\t\t\tlet files = await Files.find({_id: {$in: ids}});\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\t\t\tlet file = files[i];\n\t\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: file.key\n\t\t\t\t\t});\n\t\t\t\t\tres.push(await getSignedUrl(s3, getCommand, {expiresIn: expires}));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn {res: res, fileArray: files.map(a => a.name)};\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlWithId: {\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\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_file: string, expires: number) {\n\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\tKey: file.key\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn getSignedUrl(s3, getCommand, {expiresIn: expires});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlUSEast1BucketAndKey: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tbucket: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(bucket: string, key: string, expires: number) {\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3USEast1();\n\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\tBucket: bucket, \n\t\t\t\t\tKey: key\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn getSignedUrl(s3, getCommand, {expiresIn: expires});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrl: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string, expires: number) {\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\tKey: key\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn getSignedUrl(s3, getCommand, {expiresIn: expires});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrls: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(keys: string[], expires: number) {\n\t\t\t\tlet res = [];\n\n\t\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\t\tlet key = keys[i];\n\t\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key\n\t\t\t\t\t});\n\n\t\t\t\t\tres.push(await getSignedUrl(s3, getCommand, {expiresIn: expires}));\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\t\tgetDataURIfromURL: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\turl: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(url: string) {\n\t\t\t\tconst response = await axios.get(url, {\n\t\t\t\t\tresponseType: 'arraybuffer'\n\t\t\t\t});\n\t\t\t\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tthrow new Error(`Error in Get Data URI From URL: Failed to fetch URL, status: ${response.status}`);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tconst contentType = response.headers['content-type'];\n\t\t\t\tconst dataBase64 = Buffer.from(response.data).toString('base64');\n\t\t\t\treturn `data:${contentType};base64,${dataBase64}`;\n\t\t\t}\n\t\t},\n\t\temailFile: {\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\temail: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n additional_message: {\n type: String\n }\n\t\t\t}),\n\t\t\tfunction: async function(id_file: string, email: string, additional_message) {\n\t\t\t\tlet file = await Files.findById(id_file);\n\n\t\t\t\tif (!file) {\n\t\t\t\t\tthrow new Error('Error in AWS Email File: Could not find file');\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tlet resPDF = await this.callMethod('getSignedUrl', file.key, 259200);\n\t\t\t\t\t\n\t\t\t\t\tif (resPDF) {\n\t\t\t\t\t\tif (file.size < 5000000) {\n\t\t\t\t\t\t\tlet emailMessage = 'Attached is the file requested for email.\\n' + (additional_message !== '' ? '\\nAdditional Message:\\n' + additional_message + '\\n' : '') ;\n\n\t\t\t\t\t\t\tawait this.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage, '', [{\n\t\t\t\t\t\t\t\tfilename: file.name,\n\t\t\t\t\t\t\t\tpath: resPDF\n\t\t\t\t\t\t\t}], null, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet emailMessage = 'Please click the link to the requested file.\\n' + (additional_message !== '' ? '\\nAdditional Message:\\n' + additional_message + '\\n' : '') ;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tawait this.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage + resPDF, '', null, null, '');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Error in AWS Email File: Could not get file URL');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Email File: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/aws.ts"],"names":[],"mappings":"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","file":"aws.js","sourcesContent":["import { GetObjectCommand } from '@aws-sdk/client-s3';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\nimport axios from 'axios';\nimport SimpleSchema from 'simpl-schema';\nimport { Files } from '../collections/file.collection';\nimport { AWS, MethodManager } from '../managers/method.manager';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { objectIdHexString } from '../util/common';\nlet fs = require('fs');\nlet pdfCnt = 1000000;\n\nexport function loadAWSMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tuploadFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileData: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileSize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileOrder: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcompress: {\n\t\t\t\t\ttype: Boolean\n\t\t\t\t}\n\t\t\t}),\n\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\tfunction: async function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string, compress: Boolean) {\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\tconst maxRetries = 3;\n\t\t\t\tlet attempt = 0;\n\n\t\t\t\twhile (attempt <= maxRetries) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET,\n\t\t\t\t\t\t\tKey: key,\n\t\t\t\t\t\t\tBody: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), \n\t\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\t\tContentType: fileData.split(',')[0].split(':')[1].split(';')[0], \n\t\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\treturn Files.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\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\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tattempt++;\n\t\t\t\t\t\tif (attempt <= maxRetries) {\n\t\t\t\t\t\t\tconst backoff = Math.pow(2, attempt) * 1000;\n\t\t\t\t\t\t\tconsole.warn(`Attempt ${attempt} failed. Retrying in ${backoff / 1000} seconds...`);\n\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, backoff));\n\t\t\t\t\t\t} \n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthrow new Error(`Error in AWS Upload File And Save: Failed to upload after ${maxRetries} attempts: ${err.message}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tuploadPDFBufferAndSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileDataBuffer: {\n\t\t\t\t\ttype: Buffer\n\t\t\t\t},\n\t\t\t\tfileSize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileOrder: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\tfunction: async function(fileName: string, fileDataBuffer: any, fileSize: number, fileOrder: number, fileType: string) {\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\tconst maxRetries = 3;\n\t\t\t\tlet attempt = 0;\n\n\t\t\t\twhile (attempt <= maxRetries) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET,\n\t\t\t\t\t\t\tKey: key,\n\t\t\t\t\t\t\tBody: fileDataBuffer,\n\t\t\t\t\t\t\tACL: 'private',\n\t\t\t\t\t\t\tContentType: 'application/pdf',\n\t\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\treturn Files.create({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\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\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\tattempt++;\n\t\t\t\t\t\tif (attempt <= maxRetries) {\n\t\t\t\t\t\t\tconst backoff = Math.pow(2, attempt) * 1000;\n\t\t\t\t\t\t\tconsole.warn(`Attempt ${attempt} failed. Retrying in ${backoff / 1000} seconds...`);\n\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\tawait new Promise(resolve => setTimeout(resolve, backoff));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthrow new Error(`Error in AWS Upload PDF Buffer And Save: Failed to upload after ${maxRetries} attempts: ${err.message}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t\tuploadNonPDFFileAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: async function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key, \n\t\t\t\t\t\tBody: Buffer.from(fileData), \n\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\tContentType: 'application/gzip', \n\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t});\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\treturn Files.create({\t\n\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\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\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Upload Non PDF File And Save: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\t\n\t\t},\n\t\tuploadNonPDFBufferAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileDataBuffer: {\t\n\t\t\t\t\ttype: Buffer\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: async function(fileName: string, fileDataBuffer, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\t\t\t\t\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key, \n\t\t\t\t\t\tBody: fileDataBuffer, \n\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\tContentType: 'application/gzip', \n\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t});\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\treturn Files.create({\t\n\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t});\n\t\t\t\t\t}\t\n\t\t\t\t\telse {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Upload Non PDF Buffer And Save: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\t\n\t\t},\n\t\tuploadNonPDFStreamAndSave: {\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: async function(fileName: string, fileData: string, fileOrder: number, fileType: string) {\t\n\t\t\t\tif (!fileName) {\n\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\t\t\t\t\t\t\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.putObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key, \n\t\t\t\t\t\tBody: fs.createReadStream(fileData), \n\t\t\t\t\t\tACL: 'private', \n\t\t\t\t\t\tContentType: 'application/gzip', \n\t\t\t\t\t\tContentDisposition: 'inline'\n\t\t\t\t\t});\n\n\t\t\t\t\tif (res) {\n\t\t\t\t\t\treturn Files.create({\t\n\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: 1, key: key, order: fileOrder, type: fileType\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\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Upload Non PDF Stream And Save: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\t\n\t\t},\n\t\tdeleteFiles: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(keys: string[]) {\n\t\t\t\tif (!Array.isArray(keys) || keys.length === 0) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\tlet files = await Files.find({key: {$in: keys}});\n\t\n\t\t\t\tlet deleteCnt = files.length;\n\t\n\t\t\t\tfor (let file of files) {\n\t\t\t\t\tawait Files.deleteOne({_id: file._id});\n\t\t\t\t\t\n\t\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlet res = await s3.deleteObject({\n\t\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\t\tKey: file.key\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\tdeleteCnt--;\n\t\t\t\t\t\t\tif (!deleteCnt) {\n\t\t\t\t\t\t\t\treturn files.length;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.mesage = 'Error In AWS Delete Files: ' + err.mesage;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\tdeleteFile: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(key: string) {\t\t\n\t\t\t\tlet file = await Files.findOne({key: key});\n\t\n\t\t\t\tif (file) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait Files.deleteOne({_id: file._id});\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.mesage = 'Error In AWS Delete File (Resolve Side): ' + err.mesage;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.deleteObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET,\n\t\t\t\t\t\tKey: key\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Delete File (AWS Side): ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdeleteFileWithId: {\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}),\n\t\t\tfunction: async function(id_file: string) {\n\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\n\t\t\t\tif (!file) {\n\t\t\t\t\tthrow new Error('Error in AWS Delete File With ID: Could not find file');\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait Files.deleteOne({_id: file._id});\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Delete File With ID (Resolve Side): ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\n\t\t\t\ttry {\n\t\t\t\t\tlet res = await s3.deleteObject({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET,\n\t\t\t\t\t\tKey: file.key\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Delete File With ID (AWS Side): ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlsAndFilesWithId: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tids: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'ids.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(ids: string[], expires: number) {\n\t\t\t\tlet res = [];\n\n\t\t\t\tlet files = await Files.find({_id: {$in: ids}});\n\t\t\t\t\n\t\t\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\t\t\tlet file = files[i];\n\t\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: file.key\n\t\t\t\t\t});\n\t\t\t\t\tres.push(await getSignedUrl(s3, getCommand, {expiresIn: expires}));\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\treturn {res: res, fileArray: files.map(a => a.name)};\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlWithId: {\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\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_file: string, expires: number) {\n\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\tKey: file.key\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn getSignedUrl(s3, getCommand, {expiresIn: expires});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlUSEast1BucketAndKey: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tbucket: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(bucket: string, key: string, expires: number) {\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3USEast1();\n\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\tBucket: bucket, \n\t\t\t\t\tKey: key\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn getSignedUrl(s3, getCommand, {expiresIn: expires});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrl: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string, expires: number) {\n\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\tKey: key\n\t\t\t\t});\n\t\t\t\t\n\t\t\t\treturn getSignedUrl(s3, getCommand, {expiresIn: expires});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrls: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(keys: string[], expires: number) {\n\t\t\t\tlet res = [];\n\n\t\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\t\tlet key = keys[i];\n\t\t\t\t\tlet s3 = (<AWS>this.getAWS()).s3();\n\t\t\t\t\tlet getCommand = new GetObjectCommand({\n\t\t\t\t\t\tBucket: process.env.AWS_S3_BUCKET, \n\t\t\t\t\t\tKey: key\n\t\t\t\t\t});\n\n\t\t\t\t\tres.push(await getSignedUrl(s3, getCommand, {expiresIn: expires}));\n\t\t\t\t}\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t},\n\t\tgetDataURIfromURL: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\turl: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(url: string) {\n\t\t\t\tconst response = await axios.get(url, {\n\t\t\t\t\tresponseType: 'arraybuffer'\n\t\t\t\t});\n\t\t\t\n\t\t\t\tif (response.status !== 200) {\n\t\t\t\t\tthrow new Error(`Error in Get Data URI From URL: Failed to fetch URL, status: ${response.status}`);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tconst contentType = response.headers['content-type'];\n\t\t\t\tconst dataBase64 = Buffer.from(response.data).toString('base64');\n\t\t\t\treturn `data:${contentType};base64,${dataBase64}`;\n\t\t\t}\n\t\t},\n\t\temailFile: {\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\temail: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n additional_message: {\n type: String\n }\n\t\t\t}),\n\t\t\tfunction: async function(id_file: string, email: string, additional_message) {\n\t\t\t\tlet file = await Files.findById(id_file);\n\n\t\t\t\tif (!file) {\n\t\t\t\t\tthrow new Error('Error in AWS Email File: Could not find file');\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tlet resPDF = await this.callMethod('getSignedUrl', file.key, 259200);\n\t\t\t\t\t\n\t\t\t\t\tif (resPDF) {\n\t\t\t\t\t\tif (file.size < 5000000) {\n\t\t\t\t\t\t\tlet emailMessage = 'Attached is the file requested for email.\\n' + (additional_message !== '' ? '\\nAdditional Message:\\n' + additional_message + '\\n' : '') ;\n\n\t\t\t\t\t\t\tawait this.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage, '', [{\n\t\t\t\t\t\t\t\tfilename: file.name,\n\t\t\t\t\t\t\t\tpath: resPDF\n\t\t\t\t\t\t\t}], null, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet emailMessage = 'Please click the link to the requested file.\\n' + (additional_message !== '' ? '\\nAdditional Message:\\n' + additional_message + '\\n' : '') ;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tawait this.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage + resPDF, '', null, null, '');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Error in AWS Email File: Could not get file URL');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.mesage = 'Error In AWS Email File: ' + err.mesage;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
|
package/methods/pdf.js
CHANGED
|
@@ -91,6 +91,7 @@ exports.loadPDFMethods = loadPDFMethods;
|
|
|
91
91
|
var fs = require("fs");
|
|
92
92
|
var os = require("os");
|
|
93
93
|
var path = require("path");
|
|
94
|
+
var axios_1 = require("axios");
|
|
94
95
|
var pdf_lib_1 = require("pdf-lib");
|
|
95
96
|
var puppeteer = require("puppeteer");
|
|
96
97
|
var simpl_schema_1 = require("simpl-schema");
|
|
@@ -776,53 +777,84 @@ function loadPDFMethods(methodManager) {
|
|
|
776
777
|
}),
|
|
777
778
|
function: function (fileKeys, fileName, fileType) {
|
|
778
779
|
return __awaiter(this, void 0, void 0, function () {
|
|
779
|
-
var resSigneds,
|
|
780
|
-
var _this = this;
|
|
780
|
+
var resSigneds, err_3, mergedPdf, i, signedUrl, fileKey, response, err_4, contentTypeHeader, contentType, fileDataBuffer, fileKeyLower, isPdf, isJpg, isPng, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, err_5, mergedPDFUint8, mergedPDFBuffer;
|
|
781
781
|
return __generator(this, function (_a) {
|
|
782
782
|
switch (_a.label) {
|
|
783
783
|
case 0:
|
|
784
|
-
|
|
785
|
-
|
|
784
|
+
resSigneds = null;
|
|
785
|
+
_a.label = 1;
|
|
786
786
|
case 1:
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
promises_1 = [];
|
|
790
|
-
resSigneds.forEach(function (signedUrl) {
|
|
791
|
-
promises_1.push(_this.callMethod('getDataURIfromURL', signedUrl));
|
|
792
|
-
});
|
|
793
|
-
return [4 /*yield*/, Promise.all(promises_1)];
|
|
787
|
+
_a.trys.push([1, 3, , 4]);
|
|
788
|
+
return [4 /*yield*/, this.callMethod('getSignedUrls', fileKeys, 900)];
|
|
794
789
|
case 2:
|
|
795
|
-
|
|
796
|
-
return [
|
|
790
|
+
resSigneds = _a.sent();
|
|
791
|
+
return [3 /*break*/, 4];
|
|
797
792
|
case 3:
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
793
|
+
err_3 = _a.sent();
|
|
794
|
+
err_3.message = 'Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - ' + err_3.message;
|
|
795
|
+
throw err_3;
|
|
801
796
|
case 4:
|
|
802
|
-
if (!
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
797
|
+
if (!resSigneds || !resSigneds.length) {
|
|
798
|
+
throw new Error('Error in Merge PDF Resolve: PDF Merge - No signed urls');
|
|
799
|
+
}
|
|
800
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
806
801
|
case 5:
|
|
807
|
-
_a.
|
|
808
|
-
|
|
809
|
-
|
|
802
|
+
mergedPdf = _a.sent();
|
|
803
|
+
i = 0;
|
|
804
|
+
_a.label = 6;
|
|
810
805
|
case 6:
|
|
811
|
-
|
|
812
|
-
|
|
806
|
+
if (!(i < resSigneds.length)) return [3 /*break*/, 26];
|
|
807
|
+
signedUrl = resSigneds[i];
|
|
808
|
+
fileKey = fileKeys && fileKeys[i] ? fileKeys[i] : '';
|
|
809
|
+
response = null;
|
|
810
|
+
_a.label = 7;
|
|
813
811
|
case 7:
|
|
812
|
+
_a.trys.push([7, 9, , 10]);
|
|
813
|
+
return [4 /*yield*/, axios_1.default.get(signedUrl, {
|
|
814
|
+
responseType: 'arraybuffer'
|
|
815
|
+
})];
|
|
816
|
+
case 8:
|
|
817
|
+
response = _a.sent();
|
|
818
|
+
return [3 /*break*/, 10];
|
|
819
|
+
case 9:
|
|
820
|
+
err_4 = _a.sent();
|
|
821
|
+
err_4.message = "Error in Merge PDF Resolve: PDF Merge - Download failed (".concat(fileKey || 'unknown key', ") - ").concat(err_4.message);
|
|
822
|
+
throw err_4;
|
|
823
|
+
case 10:
|
|
824
|
+
if (!response || response.status !== 200) {
|
|
825
|
+
throw new Error("Error in Merge PDF Resolve: PDF Merge - Download failed (".concat(fileKey || 'unknown key', ") - status: ").concat(response ? response.status : 'unknown'));
|
|
826
|
+
}
|
|
827
|
+
contentTypeHeader = response.headers ? response.headers['content-type'] : '';
|
|
828
|
+
contentType = (contentTypeHeader ? String(contentTypeHeader) : '').toLowerCase().split(';')[0].trim();
|
|
829
|
+
fileDataBuffer = response.data;
|
|
830
|
+
if (!fileDataBuffer) {
|
|
831
|
+
throw new Error("Error in Merge PDF Resolve: PDF Merge - No file data returned (".concat(fileKey || 'unknown key', ")"));
|
|
832
|
+
}
|
|
833
|
+
fileKeyLower = fileKey ? fileKey.toLowerCase() : '';
|
|
834
|
+
isPdf = contentType === 'application/pdf' || contentType === 'application/x-pdf' || fileKeyLower.endsWith('.pdf');
|
|
835
|
+
isJpg = contentType === 'image/jpeg' || contentType === 'image/jpg' || fileKeyLower.endsWith('.jpg') || fileKeyLower.endsWith('.jpeg');
|
|
836
|
+
isPng = contentType === 'image/png' || fileKeyLower.endsWith('.png');
|
|
837
|
+
_a.label = 11;
|
|
838
|
+
case 11:
|
|
839
|
+
_a.trys.push([11, 24, , 25]);
|
|
840
|
+
if (!isPdf) return [3 /*break*/, 14];
|
|
841
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileDataBuffer, { updateMetadata: false, parseSpeed: pdf_lib_1.ParseSpeeds.Fastest, ignoreEncryption: true })];
|
|
842
|
+
case 12:
|
|
843
|
+
pdf = _a.sent();
|
|
844
|
+
return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
|
|
845
|
+
case 13:
|
|
814
846
|
copiedPages = _a.sent();
|
|
815
847
|
copiedPages.forEach(function (page) {
|
|
816
|
-
|
|
848
|
+
mergedPdf.addPage(page);
|
|
817
849
|
});
|
|
818
|
-
return [3 /*break*/,
|
|
819
|
-
case
|
|
820
|
-
if (!
|
|
850
|
+
return [3 /*break*/, 23];
|
|
851
|
+
case 14:
|
|
852
|
+
if (!isJpg) return [3 /*break*/, 18];
|
|
821
853
|
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
822
|
-
case
|
|
854
|
+
case 15:
|
|
823
855
|
pdf = _a.sent();
|
|
824
|
-
return [4 /*yield*/, pdf.embedJpg(
|
|
825
|
-
case
|
|
856
|
+
return [4 /*yield*/, pdf.embedJpg(fileDataBuffer)];
|
|
857
|
+
case 16:
|
|
826
858
|
img = _a.sent();
|
|
827
859
|
page = pdf.addPage();
|
|
828
860
|
imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);
|
|
@@ -832,20 +864,20 @@ function loadPDFMethods(methodManager) {
|
|
|
832
864
|
width: imgDim.width,
|
|
833
865
|
height: imgDim.height,
|
|
834
866
|
});
|
|
835
|
-
return [4 /*yield*/,
|
|
836
|
-
case
|
|
867
|
+
return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
|
|
868
|
+
case 17:
|
|
837
869
|
copiedPages = _a.sent();
|
|
838
870
|
copiedPages.forEach(function (page) {
|
|
839
|
-
|
|
871
|
+
mergedPdf.addPage(page);
|
|
840
872
|
});
|
|
841
|
-
return [3 /*break*/,
|
|
842
|
-
case
|
|
843
|
-
if (!
|
|
873
|
+
return [3 /*break*/, 23];
|
|
874
|
+
case 18:
|
|
875
|
+
if (!isPng) return [3 /*break*/, 22];
|
|
844
876
|
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
845
|
-
case
|
|
877
|
+
case 19:
|
|
846
878
|
pdf = _a.sent();
|
|
847
|
-
return [4 /*yield*/, pdf.embedPng(
|
|
848
|
-
case
|
|
879
|
+
return [4 /*yield*/, pdf.embedPng(fileDataBuffer)];
|
|
880
|
+
case 20:
|
|
849
881
|
img = _a.sent();
|
|
850
882
|
page = pdf.addPage();
|
|
851
883
|
imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);
|
|
@@ -855,40 +887,29 @@ function loadPDFMethods(methodManager) {
|
|
|
855
887
|
width: imgDim.width,
|
|
856
888
|
height: imgDim.height,
|
|
857
889
|
});
|
|
858
|
-
return [4 /*yield*/,
|
|
859
|
-
case
|
|
890
|
+
return [4 /*yield*/, mergedPdf.copyPages(pdf, pdf.getPageIndices())];
|
|
891
|
+
case 21:
|
|
860
892
|
copiedPages = _a.sent();
|
|
861
893
|
copiedPages.forEach(function (page) {
|
|
862
|
-
|
|
894
|
+
mergedPdf.addPage(page);
|
|
863
895
|
});
|
|
864
|
-
return [3 /*break*/,
|
|
865
|
-
case
|
|
866
|
-
console.log('Error - unsupported!!',
|
|
867
|
-
throw new Error(
|
|
868
|
-
case
|
|
869
|
-
case
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
case 19: return [3 /*break*/, 21];
|
|
875
|
-
case 20:
|
|
876
|
-
console.log('Error - no filedata!!', fileData);
|
|
877
|
-
throw new Error('Error in Merge PDF Resolve: No File Data');
|
|
878
|
-
case 21:
|
|
896
|
+
return [3 /*break*/, 23];
|
|
897
|
+
case 22:
|
|
898
|
+
console.log('Error - unsupported!!', { fileKey: fileKey, contentType: contentType });
|
|
899
|
+
throw new Error("Error in Merge PDF Resolve: Unsupported document type (".concat(contentType || 'unknown content-type', ")"));
|
|
900
|
+
case 23: return [3 /*break*/, 25];
|
|
901
|
+
case 24:
|
|
902
|
+
err_5 = _a.sent();
|
|
903
|
+
err_5.message = "Error in Merge PDF Resolve: PDF Merge - Error processing file (".concat(fileKey || 'unknown key', ") - ").concat(err_5.message);
|
|
904
|
+
throw err_5;
|
|
905
|
+
case 25:
|
|
879
906
|
i++;
|
|
880
|
-
return [3 /*break*/,
|
|
881
|
-
case
|
|
882
|
-
case
|
|
907
|
+
return [3 /*break*/, 6];
|
|
908
|
+
case 26: return [4 /*yield*/, mergedPdf.save()];
|
|
909
|
+
case 27:
|
|
883
910
|
mergedPDFUint8 = _a.sent();
|
|
884
|
-
|
|
885
|
-
return [2 /*return*/, this.callMethod('
|
|
886
|
-
case 24: return [3 /*break*/, 26];
|
|
887
|
-
case 25:
|
|
888
|
-
err_3 = _a.sent();
|
|
889
|
-
err_3.message = 'Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - ' + err_3.message;
|
|
890
|
-
throw err_3;
|
|
891
|
-
case 26: return [2 /*return*/];
|
|
911
|
+
mergedPDFBuffer = Buffer.from(mergedPDFUint8);
|
|
912
|
+
return [2 /*return*/, this.callMethod('uploadPDFBufferAndSave', fileName, mergedPDFBuffer, mergedPDFBuffer.byteLength, -1, fileType || 'pdf')];
|
|
892
913
|
}
|
|
893
914
|
});
|
|
894
915
|
});
|
|
@@ -909,7 +930,7 @@ function loadPDFMethods(methodManager) {
|
|
|
909
930
|
}),
|
|
910
931
|
function: function (fileKeys) {
|
|
911
932
|
return __awaiter(this, void 0, void 0, function () {
|
|
912
|
-
var resSigneds,
|
|
933
|
+
var resSigneds, promises_1, fileDatas, mergedPdf_1, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, error_1, mergedPDFUint8, b64PDF, err_6;
|
|
913
934
|
var _this = this;
|
|
914
935
|
return __generator(this, function (_a) {
|
|
915
936
|
switch (_a.label) {
|
|
@@ -919,16 +940,16 @@ function loadPDFMethods(methodManager) {
|
|
|
919
940
|
case 1:
|
|
920
941
|
resSigneds = _a.sent();
|
|
921
942
|
if (!(resSigneds && resSigneds.length)) return [3 /*break*/, 24];
|
|
922
|
-
|
|
943
|
+
promises_1 = [];
|
|
923
944
|
resSigneds.forEach(function (signedUrl) {
|
|
924
|
-
|
|
945
|
+
promises_1.push(_this.callMethod('getDataURIfromURL', signedUrl));
|
|
925
946
|
});
|
|
926
|
-
return [4 /*yield*/, Promise.all(
|
|
947
|
+
return [4 /*yield*/, Promise.all(promises_1)];
|
|
927
948
|
case 2:
|
|
928
949
|
fileDatas = _a.sent();
|
|
929
950
|
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
930
951
|
case 3:
|
|
931
|
-
|
|
952
|
+
mergedPdf_1 = _a.sent();
|
|
932
953
|
i = 0;
|
|
933
954
|
_a.label = 4;
|
|
934
955
|
case 4:
|
|
@@ -942,11 +963,11 @@ function loadPDFMethods(methodManager) {
|
|
|
942
963
|
return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: pdf_lib_1.ParseSpeeds.Fastest, ignoreEncryption: true })];
|
|
943
964
|
case 6:
|
|
944
965
|
pdf = _a.sent();
|
|
945
|
-
return [4 /*yield*/,
|
|
966
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
946
967
|
case 7:
|
|
947
968
|
copiedPages = _a.sent();
|
|
948
969
|
copiedPages.forEach(function (page) {
|
|
949
|
-
|
|
970
|
+
mergedPdf_1.addPage(page);
|
|
950
971
|
});
|
|
951
972
|
return [3 /*break*/, 17];
|
|
952
973
|
case 8:
|
|
@@ -965,11 +986,11 @@ function loadPDFMethods(methodManager) {
|
|
|
965
986
|
width: imgDim.width,
|
|
966
987
|
height: imgDim.height,
|
|
967
988
|
});
|
|
968
|
-
return [4 /*yield*/,
|
|
989
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
969
990
|
case 11:
|
|
970
991
|
copiedPages = _a.sent();
|
|
971
992
|
copiedPages.forEach(function (page) {
|
|
972
|
-
|
|
993
|
+
mergedPdf_1.addPage(page);
|
|
973
994
|
});
|
|
974
995
|
return [3 /*break*/, 17];
|
|
975
996
|
case 12:
|
|
@@ -988,11 +1009,11 @@ function loadPDFMethods(methodManager) {
|
|
|
988
1009
|
width: imgDim.width,
|
|
989
1010
|
height: imgDim.height,
|
|
990
1011
|
});
|
|
991
|
-
return [4 /*yield*/,
|
|
1012
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
992
1013
|
case 15:
|
|
993
1014
|
copiedPages = _a.sent();
|
|
994
1015
|
copiedPages.forEach(function (page) {
|
|
995
|
-
|
|
1016
|
+
mergedPdf_1.addPage(page);
|
|
996
1017
|
});
|
|
997
1018
|
return [3 /*break*/, 17];
|
|
998
1019
|
case 16:
|
|
@@ -1000,8 +1021,8 @@ function loadPDFMethods(methodManager) {
|
|
|
1000
1021
|
_a.label = 17;
|
|
1001
1022
|
case 17: return [3 /*break*/, 19];
|
|
1002
1023
|
case 18:
|
|
1003
|
-
|
|
1004
|
-
console.log('Error processing fileData:', fileData.slice(0, 60),
|
|
1024
|
+
error_1 = _a.sent();
|
|
1025
|
+
console.log('Error processing fileData:', fileData.slice(0, 60), error_1);
|
|
1005
1026
|
return [3 /*break*/, 19];
|
|
1006
1027
|
case 19: return [3 /*break*/, 21];
|
|
1007
1028
|
case 20:
|
|
@@ -1010,7 +1031,7 @@ function loadPDFMethods(methodManager) {
|
|
|
1010
1031
|
case 21:
|
|
1011
1032
|
i++;
|
|
1012
1033
|
return [3 /*break*/, 4];
|
|
1013
|
-
case 22: return [4 /*yield*/,
|
|
1034
|
+
case 22: return [4 /*yield*/, mergedPdf_1.save()];
|
|
1014
1035
|
case 23:
|
|
1015
1036
|
mergedPDFUint8 = _a.sent();
|
|
1016
1037
|
b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');
|
|
@@ -1018,9 +1039,9 @@ function loadPDFMethods(methodManager) {
|
|
|
1018
1039
|
case 24: throw new Error('Error in Merge PDF Resolve No Save: No signed urls');
|
|
1019
1040
|
case 25: return [3 /*break*/, 27];
|
|
1020
1041
|
case 26:
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
throw
|
|
1042
|
+
err_6 = _a.sent();
|
|
1043
|
+
err_6.message = "Error in Merge PDF Resolve: ".concat(err_6.message);
|
|
1044
|
+
throw err_6;
|
|
1024
1045
|
case 27: return [2 /*return*/];
|
|
1025
1046
|
}
|
|
1026
1047
|
});
|
|
@@ -1053,7 +1074,7 @@ function loadPDFMethods(methodManager) {
|
|
|
1053
1074
|
}),
|
|
1054
1075
|
function: function (htmls_1, fileName_1, fileType_1) {
|
|
1055
1076
|
return __awaiter(this, arguments, void 0, function (htmls, fileName, fileType, save) {
|
|
1056
|
-
var mergedPdf, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages,
|
|
1077
|
+
var mergedPdf, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, error_2, mergedPDFUint8, b64PDF;
|
|
1057
1078
|
if (save === void 0) { save = true; }
|
|
1058
1079
|
return __generator(this, function (_a) {
|
|
1059
1080
|
switch (_a.label) {
|
|
@@ -1131,10 +1152,10 @@ function loadPDFMethods(methodManager) {
|
|
|
1131
1152
|
throw new Error('Error in Merge PDF Resolve HTML: Unsupported file - ' + fileData.slice(0, 60));
|
|
1132
1153
|
case 15: return [3 /*break*/, 17];
|
|
1133
1154
|
case 16:
|
|
1134
|
-
|
|
1135
|
-
console.log('Error processing fileData:', fileData.slice(0, 60),
|
|
1136
|
-
|
|
1137
|
-
throw
|
|
1155
|
+
error_2 = _a.sent();
|
|
1156
|
+
console.log('Error processing fileData:', fileData.slice(0, 60), error_2);
|
|
1157
|
+
error_2.message = "Error in Merge PDF Resolve HTML: Error processing filedata - ".concat(error_2.message);
|
|
1158
|
+
throw error_2;
|
|
1138
1159
|
case 17: return [3 /*break*/, 19];
|
|
1139
1160
|
case 18:
|
|
1140
1161
|
console.log('Error - no filedata!!', fileData);
|
package/methods/pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["import * as fs from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\nimport { ParseSpeeds, PDFDocument } from 'pdf-lib';\nimport * as puppeteer from 'puppeteer';\nimport SimpleSchema from 'simpl-schema';\nimport { Flags } from '../collections/flag.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { objectIdHexString } from '../util/common';\n\nconst PUPPETEER_ARGS = [\n\t'--disable-dev-shm-usage',\n\t'--no-sandbox',\n\t'--disable-setuid-sandbox',\n\t'--disable-accelerated-2d-canvas',\n\t'--disable-gpu',\n\t'--allow-file-access-from-files',\n\t'--enable-local-file-accesses',\n\t'--font-render-hinting=none',\n\t'--disable-breakpad',\n\t'--no-zygote'\n];\n\nconst LOW_RESOURCE_PUPPETEER_ARGS = [\n\t'--single-process',\n\t'--renderer-process-limit=1',\n\t'--disable-extensions',\n\t'--disable-features=AudioServiceOutOfProcess'\n];\n\nlet cachedExecutablePath: string = null;\nlet cachedTmpExecutablePath: string = null;\n\nfunction envMs(name: string, fallback: number) {\n\tlet raw = process.env[name];\n\tif (!raw) {\n\t\treturn fallback;\n\t}\n\n\tlet parsed = parseInt(raw, 10);\n\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\treturn fallback;\n\t}\n\n\treturn parsed;\n}\n\nconst PDF_LAUNCH_TIMEOUT_MS = envMs('PDF_LAUNCH_TIMEOUT_MS', 60000);\nconst PDF_CONTENT_TIMEOUT_MS = envMs('PDF_CONTENT_TIMEOUT_MS', 60000);\nconst PDF_FONTS_TIMEOUT_MS = envMs('PDF_FONTS_TIMEOUT_MS', 30000);\nconst PDF_IMAGES_TIMEOUT_MS = envMs('PDF_IMAGES_TIMEOUT_MS', 15000);\nconst PDF_RENDER_TIMEOUT_MS = envMs('PDF_RENDER_TIMEOUT_MS', 120000);\nconst PDF_PROTOCOL_TIMEOUT_MS = envMs('PDF_PROTOCOL_TIMEOUT_MS', 120000);\nconst PDF_OVERALL_TIMEOUT_MS = envMs('PDF_OVERALL_TIMEOUT_MS', 240000);\n\nclass PdfTimeoutError extends Error {\n\tstep: string;\n\ttimeoutMs: number;\n\n\tconstructor(step: string, timeoutMs: number) {\n\t\tsuper(`PDF step timed out after ${timeoutMs}ms: ${step}`);\n\t\tthis.name = 'PdfTimeoutError';\n\t\tthis.step = step;\n\t\tthis.timeoutMs = timeoutMs;\n\t}\n}\n\nfunction withTimeout<T>(promise: Promise<T>, timeoutMs: number, step: string): Promise<T> {\n\tif (!timeoutMs || timeoutMs <= 0) {\n\t\treturn promise;\n\t}\n\n\tlet timeoutHandle: NodeJS.Timeout = null;\n\n\t// eslint-disable-next-line no-restricted-syntax\n\treturn new Promise<T>((resolve, reject) => {\n\t\ttimeoutHandle = setTimeout(() => {\n\t\t\treject(new PdfTimeoutError(step, timeoutMs));\n\t\t}, timeoutMs);\n\n\t\t// eslint-disable-next-line no-restricted-syntax, promise/prefer-await-to-then\n\t\tpromise.then(resolve, reject).finally(() => {\n\t\t\tif (timeoutHandle) {\n\t\t\t\tclearTimeout(timeoutHandle);\n\t\t\t}\n\t\t});\n\t});\n}\n\nfunction getEnvExecutablePath() {\n\tlet envExecutablePath = process.env.PUPPETEER_EXECUTABLE_PATH || process.env.CHROME_EXECUTABLE_PATH || process.env.CHROME_PATH;\n\n\tif (envExecutablePath && fs.existsSync(envExecutablePath)) {\n\t\treturn envExecutablePath;\n\t}\n\n\treturn null;\n}\n\nfunction shouldRetryBrowserLaunch(err: any) {\n\tif (!err) {\n\t\treturn false;\n\t}\n\n\tlet message = err.message || '';\n\tlet stderr = err.stderr ? err.stderr.toString() : '';\n\n\treturn message.includes('chrome_crashpad_handler') || message.includes('Operation not permitted') || message.includes('Resource temporarily unavailable') || stderr.includes('pthread_create') || stderr.includes('Resource temporarily unavailable') || stderr.includes('Failed to connect to the bus');\n}\n\nfunction prepareExecutableFallback(executablePath?: string) {\n\ttry {\n\t\tlet currentExecutablePath = executablePath || cachedExecutablePath || puppeteer.executablePath();\n\n\t\tif (!currentExecutablePath) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Avoid copying if we're already running from a tmp dir.\n\t\tif (currentExecutablePath.startsWith(os.tmpdir())) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Retry from a tmp location when the packaged Chromium cannot be executed (e.g. noexec home dirs).\n\t\tlet chromiumDir = path.dirname(currentExecutablePath);\n\t\tlet tmpRoot = path.join(os.tmpdir(), 'puppeteer-chromium');\n\t\tlet tmpChromiumDir = path.join(tmpRoot, path.basename(chromiumDir));\n\t\tlet tmpExecutablePath = path.join(tmpChromiumDir, path.basename(currentExecutablePath));\n\n\t\tif (!fs.existsSync(tmpExecutablePath)) {\n\t\t\tfs.mkdirSync(tmpChromiumDir, { recursive: true });\n\t\t\tfs.cpSync(chromiumDir, tmpChromiumDir, { recursive: true, force: true });\n\t\t}\n\n\t\tcachedTmpExecutablePath = tmpExecutablePath;\n\t\treturn tmpExecutablePath;\n\t}\n\tcatch (errCopy) {\n\t\tconsole.error(new Date(), 'Failed to prepare Chromium fallback', errCopy);\n\t\treturn null;\n\t}\n}\n\nfunction sanitizeLaunchEnv(env?: NodeJS.ProcessEnv) {\n\tlet launchEnv: NodeJS.ProcessEnv = { ...process.env, ...env };\n\n\tif (launchEnv.DBUS_SESSION_BUS_ADDRESS && !launchEnv.DBUS_SESSION_BUS_ADDRESS.startsWith('unix:') && !launchEnv.DBUS_SESSION_BUS_ADDRESS.startsWith('tcp:')) {\n\t\tdelete launchEnv.DBUS_SESSION_BUS_ADDRESS;\n\t}\n\n\treturn launchEnv;\n}\n\nfunction applyLowResourceLaunchTweaks(options: puppeteer.LaunchOptions): puppeteer.LaunchOptions {\n\tlet mergedArgs = [...(options.args || [])];\n\n\tLOW_RESOURCE_PUPPETEER_ARGS.forEach((arg) => {\n\t\tif (!mergedArgs.includes(arg)) {\n\t\t\tmergedArgs.push(arg);\n\t\t}\n\t});\n\n\treturn {\n\t\t...options,\n\t\targs: mergedArgs,\n\t\tignoreDefaultArgs: undefined,\n\t\tenv: sanitizeLaunchEnv(options.env)\n\t};\n}\n\nasync function safeCloseBrowser(browser: puppeteer.Browser) {\n\tif (!browser) {\n\t\treturn;\n\t}\n\n\tlet proc: any = null;\n\n\ttry {\n\t\tproc = typeof browser.process === 'function' ? browser.process() : null;\n\t}\n\tcatch {\n\t\tproc = null;\n\t}\n\n\ttry {\n\t\tawait withTimeout(browser.close(), 5000, 'browser.close');\n\t}\n\tcatch (errClose) {\n\t\tconsole.error(new Date(), 'Puppeteer close failed, forcing kill', errClose && errClose.message ? errClose.message : errClose);\n\t}\n\tfinally {\n\t\tlet needsKill = proc && proc.exitCode === null && proc.signalCode === null;\n\n\t\tif (needsKill) {\n\t\t\ttry {\n\t\t\t\tproc.kill('SIGKILL');\n\t\t\t}\n\t\t\tcatch (errKill: any) {\n\t\t\t\tif (!errKill || errKill.code !== 'ESRCH') {\n\t\t\t\t\tconsole.error(new Date(), 'Failed to kill Puppeteer process', errKill);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nasync function launchPDFBrowser(headless: boolean, devtools: boolean) {\n\tlet envExecutablePath = getEnvExecutablePath();\n\n\tif (!cachedExecutablePath) {\n\t\tcachedExecutablePath = envExecutablePath || puppeteer.executablePath();\n\t}\n\n\tlet launchOptions: puppeteer.LaunchOptions = {\n\t\theadless,\n\t\tdevtools,\n\t\targs: [...PUPPETEER_ARGS],\n\t\tignoreDefaultArgs: ['--disable-extensions'],\n\t\tenv: sanitizeLaunchEnv(),\n\t\ttimeout: PDF_LAUNCH_TIMEOUT_MS,\n\t\tprotocolTimeout: PDF_PROTOCOL_TIMEOUT_MS\n\t};\n\n\tif (cachedExecutablePath) {\n\t\tlaunchOptions.executablePath = cachedExecutablePath;\n\t}\n\n\ttry {\n\t\treturn await puppeteer.launch(launchOptions);\n\t}\n\tcatch (errLaunch) {\n\t\tif (!shouldRetryBrowserLaunch(errLaunch)) {\n\t\t\tthrow errLaunch;\n\t\t}\n\n\t\tlet fallbackExecutablePath = cachedTmpExecutablePath || prepareExecutableFallback(launchOptions.executablePath);\n\n\t\tlet retryOptions: puppeteer.LaunchOptions = applyLowResourceLaunchTweaks({\n\t\t\t...launchOptions,\n\t\t\texecutablePath: fallbackExecutablePath || launchOptions.executablePath\n\t\t});\n\n\t\tif (fallbackExecutablePath) {\n\t\t\tcachedExecutablePath = fallbackExecutablePath;\n\t\t}\n\n\t\tconsole.warn(new Date(), 'Retrying Puppeteer launch with low-resource args');\n\n\t\treturn await puppeteer.launch(retryOptions);\n\t}\n}\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tbypassSession: true,\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\t\tfunction: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tlet enableDebugFlag = await Flags.findOne({type: 'Enable Debug PDF'});\n\n\t\t\t\t\tlet enableDebug = !!(enableDebugFlag && enableDebugFlag.value);\n\n\t\t\t\t\tconst maxAttempts = 2;\n\t\t\t\t\tlet lastError: any = null;\n\n\t\t\t\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\t\t\t\tlet browser: puppeteer.Browser = null;\n\t\t\t\t\t\tlet page: puppeteer.Page = null;\n\t\t\t\t\t\tlet overallTimedOut = false;\n\t\t\t\t\t\tlet overallTimeoutHandle: NodeJS.Timeout = null;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbrowser = await withTimeout(launchPDFBrowser(!enableDebug, enableDebug), PDF_LAUNCH_TIMEOUT_MS, 'launchPDFBrowser');\n\n\t\t\t\t\t\t\toverallTimeoutHandle = setTimeout(() => {\n\t\t\t\t\t\t\t\toverallTimedOut = true;\n\t\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDF overall timeout hit', { fileName, attempt });\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax, promise/prefer-await-to-then\n\t\t\t\t\t\t\t\tsafeCloseBrowser(browser).catch(() => {});\n\t\t\t\t\t\t\t}, PDF_OVERALL_TIMEOUT_MS);\n\n\t\t\t\t\t\t\tpage = await browser.newPage(); // create new tab\n\t\t\t\t\t\t\tpage.setDefaultTimeout(PDF_CONTENT_TIMEOUT_MS);\n\n\t\t\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\t\tlet content = `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style type=\"text/css\">\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';\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(\"` + dejavuserif_woff + `\") format('woff');\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';\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(\"` + dejavuserifBold_woff + `\") format('woff');\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';\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(\"` + dejavuserifItalic_woff + `\") format('woff');\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';\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(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\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\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 : '12px') + `;\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\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t\t}\n\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\tpadding-top: 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: 'Dejavu Serif'; \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\t<body>\n\t\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\n\t\t\t\t\t\t\tawait withTimeout(page.setContent(content, { waitUntil: ['domcontentloaded'], timeout: PDF_CONTENT_TIMEOUT_MS }), PDF_CONTENT_TIMEOUT_MS, 'page.setContent');\n\t\t\t\t\t\t\tawait withTimeout(page.evaluateHandle('document.fonts.ready'), PDF_FONTS_TIMEOUT_MS, 'document.fonts.ready');\n\n\t\t\t\t\t\t\tif (PDF_IMAGES_TIMEOUT_MS > 0) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait withTimeout(\n\t\t\t\t\t\t\t\t\t\tpage.waitForFunction(() => Array.from(document.images).every((img: any) => img.complete), { timeout: 0 }),\n\t\t\t\t\t\t\t\t\t\tPDF_IMAGES_TIMEOUT_MS,\n\t\t\t\t\t\t\t\t\t\t'waitForImages'\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\tcatch (errImages) {\n\t\t\t\t\t\t\t\t\tif (errImages instanceof PdfTimeoutError) {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'generatePDF timed out waiting for images', { fileName, attempt });\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\tthrow errImages;\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\t\n\t\t\t\t\t\t\tlet tmpFileName = objectIdHexString() + '.pdf';\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tawait withTimeout(page.pdf({\n\t\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\t\t\tPage <span class=\"pageNumber\"></span> of <span class=\"totalPages\"></span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\t\t\ttimeout: PDF_RENDER_TIMEOUT_MS\n\t\t\t\t\t\t\t}), PDF_RENDER_TIMEOUT_MS, 'page.pdf');\n\n\t\t\t\t\t\t\tif (enableDebugFlag && enableDebugFlag.value) {\n\t\t\t\t\t\t\t\t// Set viewport dimensions based on orientation\n\t\t\t\t\t\t\t\tif (orientation === 'landscape') {\n\t\t\t\t\t\t\t\t\tawait page.setViewport({ width: 1100, height: 850 });\n\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait page.setViewport({ width: 850, height: 1100 });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + data.toString('base64');\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\tlet fileData = 'data:application/pdf;base64,' + data.toString('base64');\n\t\t\t\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\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\tcatch (errRead) {\n\t\t\t\t\t\t\t\terrRead.message = 'Error in Generate PDF: No file - ' + errRead.message;\n\t\t\t\t\t\t\t\tthrow errRead;\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\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\tthrow new Error('Error in Generate PDF: No tmp file');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tlastError = err;\n\n\t\t\t\t\t\t\tif (browser) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait browser.close().catch(() => {});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (err && err.message && err.message.includes('Navigating frame was detached') && attempt < maxAttempts) {\n\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'Retry generatePDF after detached frame', { attempt });\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDF failed', { fileName, attempt, message: err && err.message ? err.message : err });\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tif (overallTimeoutHandle) {\n\t\t\t\t\t\t\t\tclearTimeout(overallTimeoutHandle);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (page) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait page.close().catch(() => {});\n\t\t\t\t\t\t\t\tpage = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tawait safeCloseBrowser(browser);\n\t\t\t\t\t\t\tbrowser = null;\n\n\t\t\t\t\t\t\tif (overallTimedOut) {\n\t\t\t\t\t\t\t\tthrow new PdfTimeoutError('generatePDF overall', PDF_OVERALL_TIMEOUT_MS);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow lastError;\n\t\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\n\t\tgeneratePDFNoPageNumber: {\n\t\t\tbypassSession: true,\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: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tconst maxAttempts = 2;\n\t\t\t\t\tlet lastError: any = null;\n\n\t\t\t\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\t\t\t\tlet browser: puppeteer.Browser = null;\n\t\t\t\t\t\tlet page: puppeteer.Page = null;\n\t\t\t\t\t\tlet overallTimedOut = false;\n\t\t\t\t\t\tlet overallTimeoutHandle: NodeJS.Timeout = null;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbrowser = await withTimeout(launchPDFBrowser(true, false), PDF_LAUNCH_TIMEOUT_MS, 'launchPDFBrowser');\n\n\t\t\t\t\t\t\toverallTimeoutHandle = setTimeout(() => {\n\t\t\t\t\t\t\t\toverallTimedOut = true;\n\t\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDFNoPageNumber overall timeout hit', { fileName, attempt });\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax, promise/prefer-await-to-then\n\t\t\t\t\t\t\t\tsafeCloseBrowser(browser).catch(() => {});\n\t\t\t\t\t\t\t}, PDF_OVERALL_TIMEOUT_MS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tpage = await browser.newPage(); // create new tab\n\t\t\t\t\t\t\tpage.setDefaultTimeout(PDF_CONTENT_TIMEOUT_MS);\n\n\t\t\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\t\tlet content = `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style type=\"text/css\">\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';\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(\"` + dejavuserif_woff + `\") format('woff');\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';\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(\"` + dejavuserifBold_woff + `\") format('woff');\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';\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(\"` + dejavuserifItalic_woff + `\") format('woff');\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';\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(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\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\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 : '12px') + `;\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\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t\t}\n\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\tpadding-top: 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: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\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\n\t\t\t\t\t\t\tawait withTimeout(page.setContent(content, { waitUntil: ['domcontentloaded'], timeout: PDF_CONTENT_TIMEOUT_MS }), PDF_CONTENT_TIMEOUT_MS, 'page.setContent');\n\t\t\t\t\t\t\tawait withTimeout(page.evaluateHandle('document.fonts.ready'), PDF_FONTS_TIMEOUT_MS, 'document.fonts.ready');\n\n\t\t\t\t\t\t\tif (PDF_IMAGES_TIMEOUT_MS > 0) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait withTimeout(\n\t\t\t\t\t\t\t\t\t\tpage.waitForFunction(() => Array.from(document.images).every((img: any) => img.complete), { timeout: 0 }),\n\t\t\t\t\t\t\t\t\t\tPDF_IMAGES_TIMEOUT_MS,\n\t\t\t\t\t\t\t\t\t\t'waitForImages'\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\tcatch (errImages) {\n\t\t\t\t\t\t\t\t\tif (errImages instanceof PdfTimeoutError) {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'generatePDFNoPageNumber timed out waiting for images', { fileName, attempt });\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\tthrow errImages;\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\t\n\t\t\t\t\t\t\tlet tmpFileName = objectIdHexString() + '.pdf'; \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tawait withTimeout(page.pdf({\n\t\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\t\t\tfont-family: san-serif;\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\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\t\t\ttimeout: PDF_RENDER_TIMEOUT_MS\n\t\t\t\t\t\t\t}), PDF_RENDER_TIMEOUT_MS, 'page.pdf');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)))\n\t\t\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + data.toString('base64');\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\tlet fileData = 'data:application/pdf;base64,' + data.toString('base64');\n\t\t\t\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\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\tcatch (errRead) {\n\t\t\t\t\t\t\t\t\terrRead.message = 'Error in Generate PDF No Page Number: No file - ' + errRead.message;\n\t\t\t\t\t\t\t\t\tthrow errRead;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\t\tthrow new Error('Error in Generate PDF No Page Number: No tmp file');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tlastError = err;\n\n\t\t\t\t\t\t\tif (browser) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait browser.close().catch(() => {});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (err && err.message && err.message.includes('Navigating frame was detached') && attempt < maxAttempts) {\n\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'Retry generatePDFNoPageNumber after detached frame', { attempt });\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDFNoPageNumber failed', { fileName, attempt, message: err && err.message ? err.message : err });\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tif (overallTimeoutHandle) {\n\t\t\t\t\t\t\t\tclearTimeout(overallTimeoutHandle);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (page) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait page.close().catch(() => {});\n\t\t\t\t\t\t\t\tpage = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tawait safeCloseBrowser(browser);\n\t\t\t\t\t\t\tbrowser = null;\n\n\t\t\t\t\t\t\tif (overallTimedOut) {\n\t\t\t\t\t\t\t\tthrow new PdfTimeoutError('generatePDFNoPageNumber overall', PDF_OVERALL_TIMEOUT_MS);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow lastError;\n\t\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tbypassSession: true,\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: async function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\ttry {\n\t\t\t\t\tlet resSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\n\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\tlet promises = [];\n\t\n\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\tpromises.push(this.callMethod('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet fileDatas = await Promise.all(promises);\n\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\ttry {\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, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\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.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\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.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\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 {\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\tthrow new Error('Error in Merge PDF Resolve: Unsupported document type - ' + fileData.slice(0, 60));\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\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error.message);\n\t\t\t\t\t\t\t\t\terror.message = `Error in Merge PDF Resolve: Error processing fileData: ${fileData.slice(0, 60)} - ${error.message}`;\n\t\t\t\t\t\t\t\t\tthrow error;\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\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve: No File Data');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = 'Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - ' + err.message;\n\t\t\t\t\t\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\t\t\n\t\tmergePDFResolveNoSave: {\n\t\t\tbypassSession: true,\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}),\n\t\t\tfunction: async function(fileKeys: string[]) {\n\t\t\t\ttry {\n\t\t\t\t\tlet resSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\tpromises.push(this.callMethod('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet fileDatas = await Promise.all(promises);\n\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\ttry {\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, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true});\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.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\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.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\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 {\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\t\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\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\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn b64PDF;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve No Save: No signed urls');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in Merge PDF Resolve: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\n\t\tmergePDFResolveHtml: {\n\t\t\tbypassSession: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtmls: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'htmls.$': {\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\tsave: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(htmls: string[], fileName: string, fileType?: string, save = true) {\n\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\tfor (let i = 0; i < htmls.length; i++) {\n\t\t\t\t\tlet fileData = htmls[i];\n\n\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: Unsupported file - ' + fileData.slice(0, 60));\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\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\n\t\t\t\t\t\t\terror.message = `Error in Merge PDF Resolve HTML: Error processing filedata - ${error.message}`;\n\t\t\t\t\t\t\tthrow error;\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\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: No File data');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\tif (save) {\n\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn b64PDF;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t}\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["import * as fs from 'fs';\nimport * as os from 'os';\nimport * as path from 'path';\nimport axios from 'axios';\nimport { ParseSpeeds, PDFDocument } from 'pdf-lib';\nimport * as puppeteer from 'puppeteer';\nimport SimpleSchema from 'simpl-schema';\nimport { Flags } from '../collections/flag.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { objectIdHexString } from '../util/common';\n\nconst PUPPETEER_ARGS = [\n\t'--disable-dev-shm-usage',\n\t'--no-sandbox',\n\t'--disable-setuid-sandbox',\n\t'--disable-accelerated-2d-canvas',\n\t'--disable-gpu',\n\t'--allow-file-access-from-files',\n\t'--enable-local-file-accesses',\n\t'--font-render-hinting=none',\n\t'--disable-breakpad',\n\t'--no-zygote'\n];\n\nconst LOW_RESOURCE_PUPPETEER_ARGS = [\n\t'--single-process',\n\t'--renderer-process-limit=1',\n\t'--disable-extensions',\n\t'--disable-features=AudioServiceOutOfProcess'\n];\n\nlet cachedExecutablePath: string = null;\nlet cachedTmpExecutablePath: string = null;\n\nfunction envMs(name: string, fallback: number) {\n\tlet raw = process.env[name];\n\tif (!raw) {\n\t\treturn fallback;\n\t}\n\n\tlet parsed = parseInt(raw, 10);\n\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\treturn fallback;\n\t}\n\n\treturn parsed;\n}\n\nconst PDF_LAUNCH_TIMEOUT_MS = envMs('PDF_LAUNCH_TIMEOUT_MS', 60000);\nconst PDF_CONTENT_TIMEOUT_MS = envMs('PDF_CONTENT_TIMEOUT_MS', 60000);\nconst PDF_FONTS_TIMEOUT_MS = envMs('PDF_FONTS_TIMEOUT_MS', 30000);\nconst PDF_IMAGES_TIMEOUT_MS = envMs('PDF_IMAGES_TIMEOUT_MS', 15000);\nconst PDF_RENDER_TIMEOUT_MS = envMs('PDF_RENDER_TIMEOUT_MS', 120000);\nconst PDF_PROTOCOL_TIMEOUT_MS = envMs('PDF_PROTOCOL_TIMEOUT_MS', 120000);\nconst PDF_OVERALL_TIMEOUT_MS = envMs('PDF_OVERALL_TIMEOUT_MS', 240000);\n\nclass PdfTimeoutError extends Error {\n\tstep: string;\n\ttimeoutMs: number;\n\n\tconstructor(step: string, timeoutMs: number) {\n\t\tsuper(`PDF step timed out after ${timeoutMs}ms: ${step}`);\n\t\tthis.name = 'PdfTimeoutError';\n\t\tthis.step = step;\n\t\tthis.timeoutMs = timeoutMs;\n\t}\n}\n\nfunction withTimeout<T>(promise: Promise<T>, timeoutMs: number, step: string): Promise<T> {\n\tif (!timeoutMs || timeoutMs <= 0) {\n\t\treturn promise;\n\t}\n\n\tlet timeoutHandle: NodeJS.Timeout = null;\n\n\t// eslint-disable-next-line no-restricted-syntax\n\treturn new Promise<T>((resolve, reject) => {\n\t\ttimeoutHandle = setTimeout(() => {\n\t\t\treject(new PdfTimeoutError(step, timeoutMs));\n\t\t}, timeoutMs);\n\n\t\t// eslint-disable-next-line no-restricted-syntax, promise/prefer-await-to-then\n\t\tpromise.then(resolve, reject).finally(() => {\n\t\t\tif (timeoutHandle) {\n\t\t\t\tclearTimeout(timeoutHandle);\n\t\t\t}\n\t\t});\n\t});\n}\n\nfunction getEnvExecutablePath() {\n\tlet envExecutablePath = process.env.PUPPETEER_EXECUTABLE_PATH || process.env.CHROME_EXECUTABLE_PATH || process.env.CHROME_PATH;\n\n\tif (envExecutablePath && fs.existsSync(envExecutablePath)) {\n\t\treturn envExecutablePath;\n\t}\n\n\treturn null;\n}\n\nfunction shouldRetryBrowserLaunch(err: any) {\n\tif (!err) {\n\t\treturn false;\n\t}\n\n\tlet message = err.message || '';\n\tlet stderr = err.stderr ? err.stderr.toString() : '';\n\n\treturn message.includes('chrome_crashpad_handler') || message.includes('Operation not permitted') || message.includes('Resource temporarily unavailable') || stderr.includes('pthread_create') || stderr.includes('Resource temporarily unavailable') || stderr.includes('Failed to connect to the bus');\n}\n\nfunction prepareExecutableFallback(executablePath?: string) {\n\ttry {\n\t\tlet currentExecutablePath = executablePath || cachedExecutablePath || puppeteer.executablePath();\n\n\t\tif (!currentExecutablePath) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Avoid copying if we're already running from a tmp dir.\n\t\tif (currentExecutablePath.startsWith(os.tmpdir())) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Retry from a tmp location when the packaged Chromium cannot be executed (e.g. noexec home dirs).\n\t\tlet chromiumDir = path.dirname(currentExecutablePath);\n\t\tlet tmpRoot = path.join(os.tmpdir(), 'puppeteer-chromium');\n\t\tlet tmpChromiumDir = path.join(tmpRoot, path.basename(chromiumDir));\n\t\tlet tmpExecutablePath = path.join(tmpChromiumDir, path.basename(currentExecutablePath));\n\n\t\tif (!fs.existsSync(tmpExecutablePath)) {\n\t\t\tfs.mkdirSync(tmpChromiumDir, { recursive: true });\n\t\t\tfs.cpSync(chromiumDir, tmpChromiumDir, { recursive: true, force: true });\n\t\t}\n\n\t\tcachedTmpExecutablePath = tmpExecutablePath;\n\t\treturn tmpExecutablePath;\n\t}\n\tcatch (errCopy) {\n\t\tconsole.error(new Date(), 'Failed to prepare Chromium fallback', errCopy);\n\t\treturn null;\n\t}\n}\n\nfunction sanitizeLaunchEnv(env?: NodeJS.ProcessEnv) {\n\tlet launchEnv: NodeJS.ProcessEnv = { ...process.env, ...env };\n\n\tif (launchEnv.DBUS_SESSION_BUS_ADDRESS && !launchEnv.DBUS_SESSION_BUS_ADDRESS.startsWith('unix:') && !launchEnv.DBUS_SESSION_BUS_ADDRESS.startsWith('tcp:')) {\n\t\tdelete launchEnv.DBUS_SESSION_BUS_ADDRESS;\n\t}\n\n\treturn launchEnv;\n}\n\nfunction applyLowResourceLaunchTweaks(options: puppeteer.LaunchOptions): puppeteer.LaunchOptions {\n\tlet mergedArgs = [...(options.args || [])];\n\n\tLOW_RESOURCE_PUPPETEER_ARGS.forEach((arg) => {\n\t\tif (!mergedArgs.includes(arg)) {\n\t\t\tmergedArgs.push(arg);\n\t\t}\n\t});\n\n\treturn {\n\t\t...options,\n\t\targs: mergedArgs,\n\t\tignoreDefaultArgs: undefined,\n\t\tenv: sanitizeLaunchEnv(options.env)\n\t};\n}\n\nasync function safeCloseBrowser(browser: puppeteer.Browser) {\n\tif (!browser) {\n\t\treturn;\n\t}\n\n\tlet proc: any = null;\n\n\ttry {\n\t\tproc = typeof browser.process === 'function' ? browser.process() : null;\n\t}\n\tcatch {\n\t\tproc = null;\n\t}\n\n\ttry {\n\t\tawait withTimeout(browser.close(), 5000, 'browser.close');\n\t}\n\tcatch (errClose) {\n\t\tconsole.error(new Date(), 'Puppeteer close failed, forcing kill', errClose && errClose.message ? errClose.message : errClose);\n\t}\n\tfinally {\n\t\tlet needsKill = proc && proc.exitCode === null && proc.signalCode === null;\n\n\t\tif (needsKill) {\n\t\t\ttry {\n\t\t\t\tproc.kill('SIGKILL');\n\t\t\t}\n\t\t\tcatch (errKill: any) {\n\t\t\t\tif (!errKill || errKill.code !== 'ESRCH') {\n\t\t\t\t\tconsole.error(new Date(), 'Failed to kill Puppeteer process', errKill);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nasync function launchPDFBrowser(headless: boolean, devtools: boolean) {\n\tlet envExecutablePath = getEnvExecutablePath();\n\n\tif (!cachedExecutablePath) {\n\t\tcachedExecutablePath = envExecutablePath || puppeteer.executablePath();\n\t}\n\n\tlet launchOptions: puppeteer.LaunchOptions = {\n\t\theadless,\n\t\tdevtools,\n\t\targs: [...PUPPETEER_ARGS],\n\t\tignoreDefaultArgs: ['--disable-extensions'],\n\t\tenv: sanitizeLaunchEnv(),\n\t\ttimeout: PDF_LAUNCH_TIMEOUT_MS,\n\t\tprotocolTimeout: PDF_PROTOCOL_TIMEOUT_MS\n\t};\n\n\tif (cachedExecutablePath) {\n\t\tlaunchOptions.executablePath = cachedExecutablePath;\n\t}\n\n\ttry {\n\t\treturn await puppeteer.launch(launchOptions);\n\t}\n\tcatch (errLaunch) {\n\t\tif (!shouldRetryBrowserLaunch(errLaunch)) {\n\t\t\tthrow errLaunch;\n\t\t}\n\n\t\tlet fallbackExecutablePath = cachedTmpExecutablePath || prepareExecutableFallback(launchOptions.executablePath);\n\n\t\tlet retryOptions: puppeteer.LaunchOptions = applyLowResourceLaunchTweaks({\n\t\t\t...launchOptions,\n\t\t\texecutablePath: fallbackExecutablePath || launchOptions.executablePath\n\t\t});\n\n\t\tif (fallbackExecutablePath) {\n\t\t\tcachedExecutablePath = fallbackExecutablePath;\n\t\t}\n\n\t\tconsole.warn(new Date(), 'Retrying Puppeteer launch with low-resource args');\n\n\t\treturn await puppeteer.launch(retryOptions);\n\t}\n}\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tbypassSession: true,\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\t\tfunction: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tlet enableDebugFlag = await Flags.findOne({type: 'Enable Debug PDF'});\n\n\t\t\t\t\tlet enableDebug = !!(enableDebugFlag && enableDebugFlag.value);\n\n\t\t\t\t\tconst maxAttempts = 2;\n\t\t\t\t\tlet lastError: any = null;\n\n\t\t\t\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\t\t\t\tlet browser: puppeteer.Browser = null;\n\t\t\t\t\t\tlet page: puppeteer.Page = null;\n\t\t\t\t\t\tlet overallTimedOut = false;\n\t\t\t\t\t\tlet overallTimeoutHandle: NodeJS.Timeout = null;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbrowser = await withTimeout(launchPDFBrowser(!enableDebug, enableDebug), PDF_LAUNCH_TIMEOUT_MS, 'launchPDFBrowser');\n\n\t\t\t\t\t\t\toverallTimeoutHandle = setTimeout(() => {\n\t\t\t\t\t\t\t\toverallTimedOut = true;\n\t\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDF overall timeout hit', { fileName, attempt });\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax, promise/prefer-await-to-then\n\t\t\t\t\t\t\t\tsafeCloseBrowser(browser).catch(() => {});\n\t\t\t\t\t\t\t}, PDF_OVERALL_TIMEOUT_MS);\n\n\t\t\t\t\t\t\tpage = await browser.newPage(); // create new tab\n\t\t\t\t\t\t\tpage.setDefaultTimeout(PDF_CONTENT_TIMEOUT_MS);\n\n\t\t\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\t\tlet content = `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style type=\"text/css\">\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';\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(\"` + dejavuserif_woff + `\") format('woff');\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';\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(\"` + dejavuserifBold_woff + `\") format('woff');\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';\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(\"` + dejavuserifItalic_woff + `\") format('woff');\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';\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(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\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\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 : '12px') + `;\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\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t\t}\n\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\tpadding-top: 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: 'Dejavu Serif'; \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\t<body>\n\t\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\n\t\t\t\t\t\t\tawait withTimeout(page.setContent(content, { waitUntil: ['domcontentloaded'], timeout: PDF_CONTENT_TIMEOUT_MS }), PDF_CONTENT_TIMEOUT_MS, 'page.setContent');\n\t\t\t\t\t\t\tawait withTimeout(page.evaluateHandle('document.fonts.ready'), PDF_FONTS_TIMEOUT_MS, 'document.fonts.ready');\n\n\t\t\t\t\t\t\tif (PDF_IMAGES_TIMEOUT_MS > 0) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait withTimeout(\n\t\t\t\t\t\t\t\t\t\tpage.waitForFunction(() => Array.from(document.images).every((img: any) => img.complete), { timeout: 0 }),\n\t\t\t\t\t\t\t\t\t\tPDF_IMAGES_TIMEOUT_MS,\n\t\t\t\t\t\t\t\t\t\t'waitForImages'\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\tcatch (errImages) {\n\t\t\t\t\t\t\t\t\tif (errImages instanceof PdfTimeoutError) {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'generatePDF timed out waiting for images', { fileName, attempt });\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\tthrow errImages;\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\t\n\t\t\t\t\t\t\tlet tmpFileName = objectIdHexString() + '.pdf';\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tawait withTimeout(page.pdf({\n\t\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\t\t\tPage <span class=\"pageNumber\"></span> of <span class=\"totalPages\"></span>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\t\t\ttimeout: PDF_RENDER_TIMEOUT_MS\n\t\t\t\t\t\t\t}), PDF_RENDER_TIMEOUT_MS, 'page.pdf');\n\n\t\t\t\t\t\t\tif (enableDebugFlag && enableDebugFlag.value) {\n\t\t\t\t\t\t\t\t// Set viewport dimensions based on orientation\n\t\t\t\t\t\t\t\tif (orientation === 'landscape') {\n\t\t\t\t\t\t\t\t\tawait page.setViewport({ width: 1100, height: 850 });\n\t\t\t\t\t\t\t} \n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tawait page.setViewport({ width: 850, height: 1100 });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + data.toString('base64');\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\tlet fileData = 'data:application/pdf;base64,' + data.toString('base64');\n\t\t\t\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\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\tcatch (errRead) {\n\t\t\t\t\t\t\t\terrRead.message = 'Error in Generate PDF: No file - ' + errRead.message;\n\t\t\t\t\t\t\t\tthrow errRead;\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\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\tthrow new Error('Error in Generate PDF: No tmp file');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tlastError = err;\n\n\t\t\t\t\t\t\tif (browser) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait browser.close().catch(() => {});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (err && err.message && err.message.includes('Navigating frame was detached') && attempt < maxAttempts) {\n\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'Retry generatePDF after detached frame', { attempt });\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDF failed', { fileName, attempt, message: err && err.message ? err.message : err });\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tif (overallTimeoutHandle) {\n\t\t\t\t\t\t\t\tclearTimeout(overallTimeoutHandle);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (page) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait page.close().catch(() => {});\n\t\t\t\t\t\t\t\tpage = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tawait safeCloseBrowser(browser);\n\t\t\t\t\t\t\tbrowser = null;\n\n\t\t\t\t\t\t\tif (overallTimedOut) {\n\t\t\t\t\t\t\t\tthrow new PdfTimeoutError('generatePDF overall', PDF_OVERALL_TIMEOUT_MS);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow lastError;\n\t\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\n\t\tgeneratePDFNoPageNumber: {\n\t\t\tbypassSession: true,\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: async function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tconst maxAttempts = 2;\n\t\t\t\t\tlet lastError: any = null;\n\n\t\t\t\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt++) {\n\t\t\t\t\t\tlet browser: puppeteer.Browser = null;\n\t\t\t\t\t\tlet page: puppeteer.Page = null;\n\t\t\t\t\t\tlet overallTimedOut = false;\n\t\t\t\t\t\tlet overallTimeoutHandle: NodeJS.Timeout = null;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tbrowser = await withTimeout(launchPDFBrowser(true, false), PDF_LAUNCH_TIMEOUT_MS, 'launchPDFBrowser');\n\n\t\t\t\t\t\t\toverallTimeoutHandle = setTimeout(() => {\n\t\t\t\t\t\t\t\toverallTimedOut = true;\n\t\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDFNoPageNumber overall timeout hit', { fileName, attempt });\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax, promise/prefer-await-to-then\n\t\t\t\t\t\t\t\tsafeCloseBrowser(browser).catch(() => {});\n\t\t\t\t\t\t\t}, PDF_OVERALL_TIMEOUT_MS);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tpage = await browser.newPage(); // create new tab\n\t\t\t\t\t\t\tpage.setDefaultTimeout(PDF_CONTENT_TIMEOUT_MS);\n\n\t\t\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\t\tlet content = `\n\t\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t\t<style type=\"text/css\">\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';\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(\"` + dejavuserif_woff + `\") format('woff');\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';\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(\"` + dejavuserifBold_woff + `\") format('woff');\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';\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(\"` + dejavuserifItalic_woff + `\") format('woff');\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';\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(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\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\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 : '12px') + `;\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\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t\t}\n\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\tpadding-top: 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: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\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\n\t\t\t\t\t\t\tawait withTimeout(page.setContent(content, { waitUntil: ['domcontentloaded'], timeout: PDF_CONTENT_TIMEOUT_MS }), PDF_CONTENT_TIMEOUT_MS, 'page.setContent');\n\t\t\t\t\t\t\tawait withTimeout(page.evaluateHandle('document.fonts.ready'), PDF_FONTS_TIMEOUT_MS, 'document.fonts.ready');\n\n\t\t\t\t\t\t\tif (PDF_IMAGES_TIMEOUT_MS > 0) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tawait withTimeout(\n\t\t\t\t\t\t\t\t\t\tpage.waitForFunction(() => Array.from(document.images).every((img: any) => img.complete), { timeout: 0 }),\n\t\t\t\t\t\t\t\t\t\tPDF_IMAGES_TIMEOUT_MS,\n\t\t\t\t\t\t\t\t\t\t'waitForImages'\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\tcatch (errImages) {\n\t\t\t\t\t\t\t\t\tif (errImages instanceof PdfTimeoutError) {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'generatePDFNoPageNumber timed out waiting for images', { fileName, attempt });\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\tthrow errImages;\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\t\n\t\t\t\t\t\t\tlet tmpFileName = objectIdHexString() + '.pdf'; \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tawait withTimeout(page.pdf({\n\t\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\t\t\tfont-family: san-serif;\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\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\t\t\ttimeout: PDF_RENDER_TIMEOUT_MS\n\t\t\t\t\t\t\t}), PDF_RENDER_TIMEOUT_MS, 'page.pdf');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tlet data = fs.readFileSync(path.join(__dirname, (tmpFileName)))\n\t\t\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\t\treturn 'data:application/pdf;base64,' + data.toString('base64');\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\tlet fileData = 'data:application/pdf;base64,' + data.toString('base64');\n\t\t\t\t\t\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false);\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\tcatch (errRead) {\n\t\t\t\t\t\t\t\t\terrRead.message = 'Error in Generate PDF No Page Number: No file - ' + errRead.message;\n\t\t\t\t\t\t\t\t\tthrow errRead;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t\t\t\tthrow new Error('Error in Generate PDF No Page Number: No tmp file');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\t\tlastError = err;\n\n\t\t\t\t\t\t\tif (browser) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait browser.close().catch(() => {});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (err && err.message && err.message.includes('Navigating frame was detached') && attempt < maxAttempts) {\n\t\t\t\t\t\t\t\tconsole.warn(new Date(), 'Retry generatePDFNoPageNumber after detached frame', { attempt });\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconsole.error(new Date(), 'generatePDFNoPageNumber failed', { fileName, attempt, message: err && err.message ? err.message : err });\n\t\t\t\t\t\t\tthrow err;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfinally {\n\t\t\t\t\t\t\tif (overallTimeoutHandle) {\n\t\t\t\t\t\t\t\tclearTimeout(overallTimeoutHandle);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (page) {\n\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\tawait page.close().catch(() => {});\n\t\t\t\t\t\t\t\tpage = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tawait safeCloseBrowser(browser);\n\t\t\t\t\t\t\tbrowser = null;\n\n\t\t\t\t\t\t\tif (overallTimedOut) {\n\t\t\t\t\t\t\t\tthrow new PdfTimeoutError('generatePDFNoPageNumber overall', PDF_OVERALL_TIMEOUT_MS);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow lastError;\n\t\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tbypassSession: true,\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: async function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\tlet resSigneds = null;\n\n\t\t\t\ttry {\n\t\t\t\t\tresSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = 'Error in Merge PDF Resolve: PDF Merge - Get Signed URLs - ' + err.message;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\n\t\t\t\tif (!resSigneds || !resSigneds.length) {\n\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve: PDF Merge - No signed urls');\n\t\t\t\t}\n\n\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\tfor (let i = 0; i < resSigneds.length; i++) {\n\t\t\t\t\tlet signedUrl = resSigneds[i];\n\t\t\t\t\tlet fileKey = fileKeys && fileKeys[i] ? fileKeys[i] : '';\n\n\t\t\t\t\tlet response = null;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresponse = await axios.get(signedUrl, {\n\t\t\t\t\t\t\tresponseType: 'arraybuffer'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.message = `Error in Merge PDF Resolve: PDF Merge - Download failed (${fileKey || 'unknown key'}) - ${err.message}`;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!response || response.status !== 200) {\n\t\t\t\t\t\tthrow new Error(`Error in Merge PDF Resolve: PDF Merge - Download failed (${fileKey || 'unknown key'}) - status: ${response ? response.status : 'unknown'}`);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet contentTypeHeader = response.headers ? response.headers['content-type'] : '';\n\t\t\t\t\tlet contentType = (contentTypeHeader ? String(contentTypeHeader) : '').toLowerCase().split(';')[0].trim();\n\t\t\t\t\tlet fileDataBuffer = response.data;\n\n\t\t\t\t\tif (!fileDataBuffer) {\n\t\t\t\t\t\tthrow new Error(`Error in Merge PDF Resolve: PDF Merge - No file data returned (${fileKey || 'unknown key'})`);\n\t\t\t\t\t}\n\n\t\t\t\t\tlet fileKeyLower = fileKey ? fileKey.toLowerCase() : '';\n\t\t\t\t\tlet isPdf = contentType === 'application/pdf' || contentType === 'application/x-pdf' || fileKeyLower.endsWith('.pdf');\n\t\t\t\t\tlet isJpg = contentType === 'image/jpeg' || contentType === 'image/jpg' || fileKeyLower.endsWith('.jpg') || fileKeyLower.endsWith('.jpeg');\n\t\t\t\t\tlet isPng = contentType === 'image/png' || fileKeyLower.endsWith('.png');\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (isPdf) {\n\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileDataBuffer, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (isJpg) {\n\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileDataBuffer);\n\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (isPng) {\n\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileDataBuffer);\n\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\tconsole.log('Error - unsupported!!', { fileKey, contentType });\n\t\t\t\t\t\t\tthrow new Error(`Error in Merge PDF Resolve: Unsupported document type (${contentType || 'unknown content-type'})`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\terr.message = `Error in Merge PDF Resolve: PDF Merge - Error processing file (${fileKey || 'unknown key'}) - ${err.message}`;\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\t\t\t\tlet mergedPDFBuffer = Buffer.from(mergedPDFUint8);\n\n\t\t\t\treturn this.callMethod('uploadPDFBufferAndSave', fileName, mergedPDFBuffer, mergedPDFBuffer.byteLength, -1, fileType || 'pdf');\n\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\t\t\n\t\tmergePDFResolveNoSave: {\n\t\t\tbypassSession: true,\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}),\n\t\t\tfunction: async function(fileKeys: string[]) {\n\t\t\t\ttry {\n\t\t\t\t\tlet resSigneds = await this.callMethod('getSignedUrls', fileKeys, 900);\n\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\tpromises.push(this.callMethod('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet fileDatas = await Promise.all(promises);\n\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\ttry {\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, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true});\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.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\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.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\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 {\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\t\t\t\t\t\t\t\tcatch (error) {\n\t\t\t\t\t\t\t\t\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\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\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\t\t\t\t\t\t\n\t\t\t\t\t\treturn b64PDF;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve No Save: No signed urls');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\terr.message = `Error in Merge PDF Resolve: ${err.message}`;\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t},\n\t\tmergePDFResolveHtml: {\n\t\t\tbypassSession: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtmls: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'htmls.$': {\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\tsave: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(htmls: string[], fileName: string, fileType?: string, save = true) {\n\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\tfor (let i = 0; i < htmls.length; i++) {\n\t\t\t\t\tlet fileData = htmls[i];\n\n\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: Unsupported file - ' + fileData.slice(0, 60));\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\tconsole.log('Error processing fileData:', fileData.slice(0, 60), error);\n\t\t\t\t\t\t\terror.message = `Error in Merge PDF Resolve HTML: Error processing filedata - ${error.message}`;\n\t\t\t\t\t\t\tthrow error;\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\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\tthrow new Error('Error in Merge PDF Resolve HTML: No File data');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\tif (save) {\n\t\t\t\t\treturn this.callMethod('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn b64PDF;\n\t\t\t\t}\n\t\t\t},\n\t\t\tworkerTaskWeight: 2,\n\t\t\tmaxConcurrency: 1,\n\t\t\ttimeoutOverride: 300000\n\t\t}\n\t});\n}\n"]}
|
package/methods.ts
CHANGED
|
@@ -198,5 +198,8 @@ export function SERVER_METHODS(resolveioServer) {
|
|
|
198
198
|
uploadNonPDFStreamAndSave: (fileName: string, fileData: string, fileOrder: number, fileType: string, cb?: Function): Promise<any> => {
|
|
199
199
|
return resolveioServer.call('uploadNonPDFStreamAndSave', fileName, fileData, fileOrder, fileType, cb);
|
|
200
200
|
},
|
|
201
|
+
uploadPDFBufferAndSave: (fileName: string, fileDataBuffer: any, fileSize: number, fileOrder: number, fileType: string, cb?: Function): Promise<any> => {
|
|
202
|
+
return resolveioServer.call('uploadPDFBufferAndSave', fileName, fileDataBuffer, fileSize, fileOrder, fileType, cb);
|
|
203
|
+
},
|
|
201
204
|
};
|
|
202
205
|
}
|