@resolveio/server-lib 20.12.54 → 20.12.56
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 +123 -34
- package/methods/aws.js.map +1 -1
- package/methods/pdf.js +126 -104
- 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,95 @@ 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
|
+
function: function (fileName, fileDataBuffer, fileSize, fileOrder, fileType) {
|
|
174
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
175
|
+
var key, s3, maxRetries, attempt, _loop_2, state_2;
|
|
176
|
+
return __generator(this, function (_a) {
|
|
177
|
+
switch (_a.label) {
|
|
178
|
+
case 0:
|
|
179
|
+
if (!fileName) {
|
|
180
|
+
throw new Error("Invalid File Name provided");
|
|
181
|
+
}
|
|
182
|
+
key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;
|
|
183
|
+
s3 = this.getAWS().s3();
|
|
184
|
+
maxRetries = 3;
|
|
185
|
+
attempt = 0;
|
|
186
|
+
_loop_2 = function () {
|
|
187
|
+
var res, err_2, backoff_2;
|
|
188
|
+
return __generator(this, function (_b) {
|
|
189
|
+
switch (_b.label) {
|
|
190
|
+
case 0:
|
|
191
|
+
_b.trys.push([0, 2, , 6]);
|
|
192
|
+
return [4 /*yield*/, s3.putObject({
|
|
193
|
+
Bucket: process.env.AWS_S3_BUCKET,
|
|
194
|
+
Key: key,
|
|
195
|
+
Body: fileDataBuffer,
|
|
196
|
+
ACL: 'private',
|
|
197
|
+
ContentType: 'application/pdf',
|
|
198
|
+
ContentDisposition: 'inline'
|
|
199
|
+
})];
|
|
200
|
+
case 1:
|
|
201
|
+
res = _b.sent();
|
|
202
|
+
if (res) {
|
|
203
|
+
return [2 /*return*/, { value: file_collection_1.Files.create({
|
|
204
|
+
_id: (0, common_1.objectIdHexString)(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType
|
|
205
|
+
}) }];
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
return [2 /*return*/, { value: null }];
|
|
209
|
+
}
|
|
210
|
+
return [3 /*break*/, 6];
|
|
211
|
+
case 2:
|
|
212
|
+
err_2 = _b.sent();
|
|
213
|
+
attempt++;
|
|
214
|
+
if (!(attempt <= maxRetries)) return [3 /*break*/, 4];
|
|
215
|
+
backoff_2 = Math.pow(2, attempt) * 1000;
|
|
216
|
+
console.warn("Attempt ".concat(attempt, " failed. Retrying in ").concat(backoff_2 / 1000, " seconds..."));
|
|
217
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
218
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, backoff_2); })];
|
|
219
|
+
case 3:
|
|
220
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
221
|
+
_b.sent();
|
|
222
|
+
return [3 /*break*/, 5];
|
|
223
|
+
case 4: throw new Error("Error in AWS Upload PDF Buffer And Save: Failed to upload after ".concat(maxRetries, " attempts: ").concat(err_2.message));
|
|
224
|
+
case 5: return [3 /*break*/, 6];
|
|
225
|
+
case 6: return [2 /*return*/];
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
};
|
|
229
|
+
_a.label = 1;
|
|
230
|
+
case 1:
|
|
231
|
+
if (!(attempt <= maxRetries)) return [3 /*break*/, 3];
|
|
232
|
+
return [5 /*yield**/, _loop_2()];
|
|
233
|
+
case 2:
|
|
234
|
+
state_2 = _a.sent();
|
|
235
|
+
if (typeof state_2 === "object")
|
|
236
|
+
return [2 /*return*/, state_2.value];
|
|
237
|
+
return [3 /*break*/, 1];
|
|
238
|
+
case 3: return [2 /*return*/, null];
|
|
239
|
+
}
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
},
|
|
155
244
|
uploadNonPDFFileAndSave: {
|
|
156
245
|
check: new simpl_schema_1.default({
|
|
157
246
|
fileName: {
|
|
@@ -172,7 +261,7 @@ function loadAWSMethods(methodManager) {
|
|
|
172
261
|
}),
|
|
173
262
|
function: function (fileName, fileData, fileSize, fileOrder, fileType) {
|
|
174
263
|
return __awaiter(this, void 0, void 0, function () {
|
|
175
|
-
var key, s3, res,
|
|
264
|
+
var key, s3, res, err_3;
|
|
176
265
|
return __generator(this, function (_a) {
|
|
177
266
|
switch (_a.label) {
|
|
178
267
|
case 0:
|
|
@@ -204,9 +293,9 @@ function loadAWSMethods(methodManager) {
|
|
|
204
293
|
}
|
|
205
294
|
return [3 /*break*/, 4];
|
|
206
295
|
case 3:
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
throw
|
|
296
|
+
err_3 = _a.sent();
|
|
297
|
+
err_3.mesage = 'Error In AWS Upload Non PDF File And Save: ' + err_3.mesage;
|
|
298
|
+
throw err_3;
|
|
210
299
|
case 4: return [2 /*return*/];
|
|
211
300
|
}
|
|
212
301
|
});
|
|
@@ -233,7 +322,7 @@ function loadAWSMethods(methodManager) {
|
|
|
233
322
|
}),
|
|
234
323
|
function: function (fileName, fileDataBuffer, fileSize, fileOrder, fileType) {
|
|
235
324
|
return __awaiter(this, void 0, void 0, function () {
|
|
236
|
-
var key, s3, res,
|
|
325
|
+
var key, s3, res, err_4;
|
|
237
326
|
return __generator(this, function (_a) {
|
|
238
327
|
switch (_a.label) {
|
|
239
328
|
case 0:
|
|
@@ -265,9 +354,9 @@ function loadAWSMethods(methodManager) {
|
|
|
265
354
|
}
|
|
266
355
|
return [3 /*break*/, 4];
|
|
267
356
|
case 3:
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
throw
|
|
357
|
+
err_4 = _a.sent();
|
|
358
|
+
err_4.mesage = 'Error In AWS Upload Non PDF Buffer And Save: ' + err_4.mesage;
|
|
359
|
+
throw err_4;
|
|
271
360
|
case 4: return [2 /*return*/];
|
|
272
361
|
}
|
|
273
362
|
});
|
|
@@ -291,7 +380,7 @@ function loadAWSMethods(methodManager) {
|
|
|
291
380
|
}),
|
|
292
381
|
function: function (fileName, fileData, fileOrder, fileType) {
|
|
293
382
|
return __awaiter(this, void 0, void 0, function () {
|
|
294
|
-
var key, s3, res,
|
|
383
|
+
var key, s3, res, err_5;
|
|
295
384
|
return __generator(this, function (_a) {
|
|
296
385
|
switch (_a.label) {
|
|
297
386
|
case 0:
|
|
@@ -323,9 +412,9 @@ function loadAWSMethods(methodManager) {
|
|
|
323
412
|
}
|
|
324
413
|
return [3 /*break*/, 4];
|
|
325
414
|
case 3:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
throw
|
|
415
|
+
err_5 = _a.sent();
|
|
416
|
+
err_5.mesage = 'Error In AWS Upload Non PDF Stream And Save: ' + err_5.mesage;
|
|
417
|
+
throw err_5;
|
|
329
418
|
case 4: return [2 /*return*/];
|
|
330
419
|
}
|
|
331
420
|
});
|
|
@@ -343,7 +432,7 @@ function loadAWSMethods(methodManager) {
|
|
|
343
432
|
}),
|
|
344
433
|
function: function (keys) {
|
|
345
434
|
return __awaiter(this, void 0, void 0, function () {
|
|
346
|
-
var files, deleteCnt, files_1, files_1_1, file, s3, res,
|
|
435
|
+
var files, deleteCnt, files_1, files_1_1, file, s3, res, err_6, e_1_1;
|
|
347
436
|
var e_1, _a;
|
|
348
437
|
return __generator(this, function (_b) {
|
|
349
438
|
switch (_b.label) {
|
|
@@ -384,9 +473,9 @@ function loadAWSMethods(methodManager) {
|
|
|
384
473
|
}
|
|
385
474
|
return [3 /*break*/, 8];
|
|
386
475
|
case 7:
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
throw
|
|
476
|
+
err_6 = _b.sent();
|
|
477
|
+
err_6.mesage = 'Error In AWS Delete Files: ' + err_6.mesage;
|
|
478
|
+
throw err_6;
|
|
390
479
|
case 8:
|
|
391
480
|
files_1_1 = files_1.next();
|
|
392
481
|
return [3 /*break*/, 3];
|
|
@@ -415,7 +504,7 @@ function loadAWSMethods(methodManager) {
|
|
|
415
504
|
}),
|
|
416
505
|
function: function (key) {
|
|
417
506
|
return __awaiter(this, void 0, void 0, function () {
|
|
418
|
-
var file,
|
|
507
|
+
var file, err_7, s3, res, err_8;
|
|
419
508
|
return __generator(this, function (_a) {
|
|
420
509
|
switch (_a.label) {
|
|
421
510
|
case 0: return [4 /*yield*/, file_collection_1.Files.findOne({ key: key })];
|
|
@@ -430,9 +519,9 @@ function loadAWSMethods(methodManager) {
|
|
|
430
519
|
_a.sent();
|
|
431
520
|
return [3 /*break*/, 5];
|
|
432
521
|
case 4:
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
throw
|
|
522
|
+
err_7 = _a.sent();
|
|
523
|
+
err_7.mesage = 'Error In AWS Delete File (Resolve Side): ' + err_7.mesage;
|
|
524
|
+
throw err_7;
|
|
436
525
|
case 5:
|
|
437
526
|
s3 = this.getAWS().s3();
|
|
438
527
|
_a.label = 6;
|
|
@@ -446,9 +535,9 @@ function loadAWSMethods(methodManager) {
|
|
|
446
535
|
res = _a.sent();
|
|
447
536
|
return [2 /*return*/, res];
|
|
448
537
|
case 8:
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
throw
|
|
538
|
+
err_8 = _a.sent();
|
|
539
|
+
err_8.mesage = 'Error In AWS Delete File (AWS Side): ' + err_8.mesage;
|
|
540
|
+
throw err_8;
|
|
452
541
|
case 9: return [2 /*return*/];
|
|
453
542
|
}
|
|
454
543
|
});
|
|
@@ -463,7 +552,7 @@ function loadAWSMethods(methodManager) {
|
|
|
463
552
|
}),
|
|
464
553
|
function: function (id_file) {
|
|
465
554
|
return __awaiter(this, void 0, void 0, function () {
|
|
466
|
-
var file,
|
|
555
|
+
var file, err_9, s3, res, err_10;
|
|
467
556
|
return __generator(this, function (_a) {
|
|
468
557
|
switch (_a.label) {
|
|
469
558
|
case 0: return [4 /*yield*/, file_collection_1.Files.findOne({ _id: id_file })];
|
|
@@ -480,9 +569,9 @@ function loadAWSMethods(methodManager) {
|
|
|
480
569
|
_a.sent();
|
|
481
570
|
return [3 /*break*/, 5];
|
|
482
571
|
case 4:
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
throw
|
|
572
|
+
err_9 = _a.sent();
|
|
573
|
+
err_9.mesage = 'Error In AWS Delete File With ID (Resolve Side): ' + err_9.mesage;
|
|
574
|
+
throw err_9;
|
|
486
575
|
case 5:
|
|
487
576
|
s3 = this.getAWS().s3();
|
|
488
577
|
_a.label = 6;
|
|
@@ -496,9 +585,9 @@ function loadAWSMethods(methodManager) {
|
|
|
496
585
|
res = _a.sent();
|
|
497
586
|
return [2 /*return*/, res];
|
|
498
587
|
case 8:
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
throw
|
|
588
|
+
err_10 = _a.sent();
|
|
589
|
+
err_10.mesage = 'Error In AWS Delete File With ID (AWS Side): ' + err_10.mesage;
|
|
590
|
+
throw err_10;
|
|
502
591
|
case 9: return [2 /*return*/];
|
|
503
592
|
}
|
|
504
593
|
});
|
|
@@ -702,7 +791,7 @@ function loadAWSMethods(methodManager) {
|
|
|
702
791
|
}),
|
|
703
792
|
function: function (id_file, email, additional_message) {
|
|
704
793
|
return __awaiter(this, void 0, void 0, function () {
|
|
705
|
-
var file, resPDF, emailMessage, emailMessage,
|
|
794
|
+
var file, resPDF, emailMessage, emailMessage, err_11;
|
|
706
795
|
return __generator(this, function (_a) {
|
|
707
796
|
switch (_a.label) {
|
|
708
797
|
case 0: return [4 /*yield*/, file_collection_1.Files.findById(id_file)];
|
|
@@ -737,9 +826,9 @@ function loadAWSMethods(methodManager) {
|
|
|
737
826
|
case 8: throw new Error('Error in AWS Email File: Could not get file URL');
|
|
738
827
|
case 9: return [3 /*break*/, 11];
|
|
739
828
|
case 10:
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
throw
|
|
829
|
+
err_11 = _a.sent();
|
|
830
|
+
err_11.mesage = 'Error In AWS Email File: ' + err_11.mesage;
|
|
831
|
+
throw err_11;
|
|
743
832
|
case 11: return [2 /*return*/];
|
|
744
833
|
}
|
|
745
834
|
});
|
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\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\t}),\n\t\t\t\tfunction: async function(fileName: string, fileDataBuffer: any, fileSize: number, fileOrder: number, fileType: string) {\n\t\t\t\t\tif (!fileName) {\n\t\t\t\t\t\tthrow new Error(\"Invalid File Name provided\");\n\t\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,55 +777,97 @@ 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, responseData, fileDataBuffer, fileKeyLower, isPdf, isJpg, isPng, pdf, pageCount, pageIndex, copiedPages, img, page, imgDim, img, page, imgDim, 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*/, 27];
|
|
807
|
+
signedUrl = resSigneds[i];
|
|
808
|
+
fileKey = fileKeys && fileKeys[i] ? fileKeys[i] : '';
|
|
809
|
+
response = null;
|
|
810
|
+
_a.label = 7;
|
|
813
811
|
case 7:
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
return [3 /*break*/, 17];
|
|
812
|
+
_a.trys.push([7, 9, , 10]);
|
|
813
|
+
return [4 /*yield*/, axios_1.default.get(signedUrl, {
|
|
814
|
+
responseType: 'arraybuffer'
|
|
815
|
+
})];
|
|
819
816
|
case 8:
|
|
820
|
-
|
|
821
|
-
return [
|
|
817
|
+
response = _a.sent();
|
|
818
|
+
return [3 /*break*/, 10];
|
|
822
819
|
case 9:
|
|
823
|
-
|
|
824
|
-
|
|
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;
|
|
825
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
|
+
responseData = response.data;
|
|
830
|
+
fileDataBuffer = Buffer.isBuffer(responseData) ? responseData : Buffer.from(responseData);
|
|
831
|
+
if (!fileDataBuffer) {
|
|
832
|
+
throw new Error("Error in Merge PDF Resolve: PDF Merge - No file data returned (".concat(fileKey || 'unknown key', ")"));
|
|
833
|
+
}
|
|
834
|
+
fileKeyLower = fileKey ? fileKey.toLowerCase() : '';
|
|
835
|
+
isPdf = contentType === 'application/pdf' || contentType === 'application/x-pdf' || fileKeyLower.endsWith('.pdf');
|
|
836
|
+
isJpg = contentType === 'image/jpeg' || contentType === 'image/jpg' || fileKeyLower.endsWith('.jpg') || fileKeyLower.endsWith('.jpeg');
|
|
837
|
+
isPng = contentType === 'image/png' || fileKeyLower.endsWith('.png');
|
|
838
|
+
_a.label = 11;
|
|
839
|
+
case 11:
|
|
840
|
+
_a.trys.push([11, 24, 25, 26]);
|
|
841
|
+
if (!isPdf) return [3 /*break*/, 18];
|
|
842
|
+
return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileDataBuffer, { updateMetadata: false, parseSpeed: pdf_lib_1.ParseSpeeds.Fastest, ignoreEncryption: true })];
|
|
843
|
+
case 12:
|
|
844
|
+
pdf = _a.sent();
|
|
845
|
+
pageCount = pdf.getPageCount();
|
|
846
|
+
pageIndex = 0;
|
|
847
|
+
_a.label = 13;
|
|
848
|
+
case 13:
|
|
849
|
+
if (!(pageIndex < pageCount)) return [3 /*break*/, 17];
|
|
850
|
+
return [4 /*yield*/, mergedPdf.copyPages(pdf, [pageIndex])];
|
|
851
|
+
case 14:
|
|
852
|
+
copiedPages = _a.sent();
|
|
853
|
+
mergedPdf.addPage(copiedPages[0]);
|
|
854
|
+
if (!(pageIndex > 0 && pageIndex % 25 === 0)) return [3 /*break*/, 16];
|
|
855
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
856
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setImmediate(resolve); })];
|
|
857
|
+
case 15:
|
|
858
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
859
|
+
_a.sent();
|
|
860
|
+
_a.label = 16;
|
|
861
|
+
case 16:
|
|
862
|
+
pageIndex++;
|
|
863
|
+
return [3 /*break*/, 13];
|
|
864
|
+
case 17: return [3 /*break*/, 23];
|
|
865
|
+
case 18:
|
|
866
|
+
if (!isJpg) return [3 /*break*/, 20];
|
|
867
|
+
return [4 /*yield*/, mergedPdf.embedJpg(fileDataBuffer)];
|
|
868
|
+
case 19:
|
|
826
869
|
img = _a.sent();
|
|
827
|
-
page =
|
|
870
|
+
page = mergedPdf.addPage();
|
|
828
871
|
imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);
|
|
829
872
|
page.drawImage(img, {
|
|
830
873
|
x: page.getWidth() / 2 - imgDim.width / 2,
|
|
@@ -832,22 +875,13 @@ function loadPDFMethods(methodManager) {
|
|
|
832
875
|
width: imgDim.width,
|
|
833
876
|
height: imgDim.height,
|
|
834
877
|
});
|
|
835
|
-
return [
|
|
836
|
-
case
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
});
|
|
841
|
-
return [3 /*break*/, 17];
|
|
842
|
-
case 12:
|
|
843
|
-
if (!fileData.startsWith('data:image/png;base64,iVBOR')) return [3 /*break*/, 16];
|
|
844
|
-
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
845
|
-
case 13:
|
|
846
|
-
pdf = _a.sent();
|
|
847
|
-
return [4 /*yield*/, pdf.embedPng(fileData)];
|
|
848
|
-
case 14:
|
|
878
|
+
return [3 /*break*/, 23];
|
|
879
|
+
case 20:
|
|
880
|
+
if (!isPng) return [3 /*break*/, 22];
|
|
881
|
+
return [4 /*yield*/, mergedPdf.embedPng(fileDataBuffer)];
|
|
882
|
+
case 21:
|
|
849
883
|
img = _a.sent();
|
|
850
|
-
page =
|
|
884
|
+
page = mergedPdf.addPage();
|
|
851
885
|
imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);
|
|
852
886
|
page.drawImage(img, {
|
|
853
887
|
x: page.getWidth() / 2 - imgDim.width / 2,
|
|
@@ -855,40 +889,28 @@ function loadPDFMethods(methodManager) {
|
|
|
855
889
|
width: imgDim.width,
|
|
856
890
|
height: imgDim.height,
|
|
857
891
|
});
|
|
858
|
-
return [
|
|
859
|
-
case
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
throw error_1;
|
|
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:
|
|
892
|
+
return [3 /*break*/, 23];
|
|
893
|
+
case 22:
|
|
894
|
+
console.log('Error - unsupported!!', { fileKey: fileKey, contentType: contentType });
|
|
895
|
+
throw new Error("Error in Merge PDF Resolve: Unsupported document type (".concat(contentType || 'unknown content-type', ")"));
|
|
896
|
+
case 23: return [3 /*break*/, 26];
|
|
897
|
+
case 24:
|
|
898
|
+
err_5 = _a.sent();
|
|
899
|
+
err_5.message = "Error in Merge PDF Resolve: PDF Merge - Error processing file (".concat(fileKey || 'unknown key', ") - ").concat(err_5.message);
|
|
900
|
+
throw err_5;
|
|
901
|
+
case 25:
|
|
902
|
+
response = null;
|
|
903
|
+
responseData = null;
|
|
904
|
+
fileDataBuffer = null;
|
|
905
|
+
return [7 /*endfinally*/];
|
|
906
|
+
case 26:
|
|
879
907
|
i++;
|
|
880
|
-
return [3 /*break*/,
|
|
881
|
-
case
|
|
882
|
-
case
|
|
908
|
+
return [3 /*break*/, 6];
|
|
909
|
+
case 27: return [4 /*yield*/, mergedPdf.save()];
|
|
910
|
+
case 28:
|
|
883
911
|
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*/];
|
|
912
|
+
mergedPDFBuffer = Buffer.from(mergedPDFUint8.buffer, mergedPDFUint8.byteOffset, mergedPDFUint8.byteLength);
|
|
913
|
+
return [2 /*return*/, this.callMethod('uploadPDFBufferAndSave', fileName, mergedPDFBuffer, mergedPDFBuffer.byteLength, -1, fileType || 'pdf')];
|
|
892
914
|
}
|
|
893
915
|
});
|
|
894
916
|
});
|
|
@@ -909,7 +931,7 @@ function loadPDFMethods(methodManager) {
|
|
|
909
931
|
}),
|
|
910
932
|
function: function (fileKeys) {
|
|
911
933
|
return __awaiter(this, void 0, void 0, function () {
|
|
912
|
-
var resSigneds,
|
|
934
|
+
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
935
|
var _this = this;
|
|
914
936
|
return __generator(this, function (_a) {
|
|
915
937
|
switch (_a.label) {
|
|
@@ -919,16 +941,16 @@ function loadPDFMethods(methodManager) {
|
|
|
919
941
|
case 1:
|
|
920
942
|
resSigneds = _a.sent();
|
|
921
943
|
if (!(resSigneds && resSigneds.length)) return [3 /*break*/, 24];
|
|
922
|
-
|
|
944
|
+
promises_1 = [];
|
|
923
945
|
resSigneds.forEach(function (signedUrl) {
|
|
924
|
-
|
|
946
|
+
promises_1.push(_this.callMethod('getDataURIfromURL', signedUrl));
|
|
925
947
|
});
|
|
926
|
-
return [4 /*yield*/, Promise.all(
|
|
948
|
+
return [4 /*yield*/, Promise.all(promises_1)];
|
|
927
949
|
case 2:
|
|
928
950
|
fileDatas = _a.sent();
|
|
929
951
|
return [4 /*yield*/, pdf_lib_1.PDFDocument.create()];
|
|
930
952
|
case 3:
|
|
931
|
-
|
|
953
|
+
mergedPdf_1 = _a.sent();
|
|
932
954
|
i = 0;
|
|
933
955
|
_a.label = 4;
|
|
934
956
|
case 4:
|
|
@@ -942,11 +964,11 @@ function loadPDFMethods(methodManager) {
|
|
|
942
964
|
return [4 /*yield*/, pdf_lib_1.PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: pdf_lib_1.ParseSpeeds.Fastest, ignoreEncryption: true })];
|
|
943
965
|
case 6:
|
|
944
966
|
pdf = _a.sent();
|
|
945
|
-
return [4 /*yield*/,
|
|
967
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
946
968
|
case 7:
|
|
947
969
|
copiedPages = _a.sent();
|
|
948
970
|
copiedPages.forEach(function (page) {
|
|
949
|
-
|
|
971
|
+
mergedPdf_1.addPage(page);
|
|
950
972
|
});
|
|
951
973
|
return [3 /*break*/, 17];
|
|
952
974
|
case 8:
|
|
@@ -965,11 +987,11 @@ function loadPDFMethods(methodManager) {
|
|
|
965
987
|
width: imgDim.width,
|
|
966
988
|
height: imgDim.height,
|
|
967
989
|
});
|
|
968
|
-
return [4 /*yield*/,
|
|
990
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
969
991
|
case 11:
|
|
970
992
|
copiedPages = _a.sent();
|
|
971
993
|
copiedPages.forEach(function (page) {
|
|
972
|
-
|
|
994
|
+
mergedPdf_1.addPage(page);
|
|
973
995
|
});
|
|
974
996
|
return [3 /*break*/, 17];
|
|
975
997
|
case 12:
|
|
@@ -988,11 +1010,11 @@ function loadPDFMethods(methodManager) {
|
|
|
988
1010
|
width: imgDim.width,
|
|
989
1011
|
height: imgDim.height,
|
|
990
1012
|
});
|
|
991
|
-
return [4 /*yield*/,
|
|
1013
|
+
return [4 /*yield*/, mergedPdf_1.copyPages(pdf, pdf.getPageIndices())];
|
|
992
1014
|
case 15:
|
|
993
1015
|
copiedPages = _a.sent();
|
|
994
1016
|
copiedPages.forEach(function (page) {
|
|
995
|
-
|
|
1017
|
+
mergedPdf_1.addPage(page);
|
|
996
1018
|
});
|
|
997
1019
|
return [3 /*break*/, 17];
|
|
998
1020
|
case 16:
|
|
@@ -1000,8 +1022,8 @@ function loadPDFMethods(methodManager) {
|
|
|
1000
1022
|
_a.label = 17;
|
|
1001
1023
|
case 17: return [3 /*break*/, 19];
|
|
1002
1024
|
case 18:
|
|
1003
|
-
|
|
1004
|
-
console.log('Error processing fileData:', fileData.slice(0, 60),
|
|
1025
|
+
error_1 = _a.sent();
|
|
1026
|
+
console.log('Error processing fileData:', fileData.slice(0, 60), error_1);
|
|
1005
1027
|
return [3 /*break*/, 19];
|
|
1006
1028
|
case 19: return [3 /*break*/, 21];
|
|
1007
1029
|
case 20:
|
|
@@ -1010,7 +1032,7 @@ function loadPDFMethods(methodManager) {
|
|
|
1010
1032
|
case 21:
|
|
1011
1033
|
i++;
|
|
1012
1034
|
return [3 /*break*/, 4];
|
|
1013
|
-
case 22: return [4 /*yield*/,
|
|
1035
|
+
case 22: return [4 /*yield*/, mergedPdf_1.save()];
|
|
1014
1036
|
case 23:
|
|
1015
1037
|
mergedPDFUint8 = _a.sent();
|
|
1016
1038
|
b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');
|
|
@@ -1018,9 +1040,9 @@ function loadPDFMethods(methodManager) {
|
|
|
1018
1040
|
case 24: throw new Error('Error in Merge PDF Resolve No Save: No signed urls');
|
|
1019
1041
|
case 25: return [3 /*break*/, 27];
|
|
1020
1042
|
case 26:
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
throw
|
|
1043
|
+
err_6 = _a.sent();
|
|
1044
|
+
err_6.message = "Error in Merge PDF Resolve: ".concat(err_6.message);
|
|
1045
|
+
throw err_6;
|
|
1024
1046
|
case 27: return [2 /*return*/];
|
|
1025
1047
|
}
|
|
1026
1048
|
});
|
|
@@ -1053,7 +1075,7 @@ function loadPDFMethods(methodManager) {
|
|
|
1053
1075
|
}),
|
|
1054
1076
|
function: function (htmls_1, fileName_1, fileType_1) {
|
|
1055
1077
|
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,
|
|
1078
|
+
var mergedPdf, i, fileData, pdf, copiedPages, pdf, img, page, imgDim, copiedPages, pdf, img, page, imgDim, copiedPages, error_2, mergedPDFUint8, b64PDF;
|
|
1057
1079
|
if (save === void 0) { save = true; }
|
|
1058
1080
|
return __generator(this, function (_a) {
|
|
1059
1081
|
switch (_a.label) {
|
|
@@ -1131,10 +1153,10 @@ function loadPDFMethods(methodManager) {
|
|
|
1131
1153
|
throw new Error('Error in Merge PDF Resolve HTML: Unsupported file - ' + fileData.slice(0, 60));
|
|
1132
1154
|
case 15: return [3 /*break*/, 17];
|
|
1133
1155
|
case 16:
|
|
1134
|
-
|
|
1135
|
-
console.log('Error processing fileData:', fileData.slice(0, 60),
|
|
1136
|
-
|
|
1137
|
-
throw
|
|
1156
|
+
error_2 = _a.sent();
|
|
1157
|
+
console.log('Error processing fileData:', fileData.slice(0, 60), error_2);
|
|
1158
|
+
error_2.message = "Error in Merge PDF Resolve HTML: Error processing filedata - ".concat(error_2.message);
|
|
1159
|
+
throw error_2;
|
|
1138
1160
|
case 17: return [3 /*break*/, 19];
|
|
1139
1161
|
case 18:
|
|
1140
1162
|
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\n\t\t\t\t\tlet responseData = response.data;\n\t\t\t\t\tlet fileDataBuffer = Buffer.isBuffer(responseData) ? responseData : Buffer.from(responseData);\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 as any, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\tlet pageCount = pdf.getPageCount();\n\n\t\t\t\t\t\t\tfor (let pageIndex = 0; pageIndex < pageCount; pageIndex++) {\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, [pageIndex]);\n\t\t\t\t\t\t\t\tmergedPdf.addPage(copiedPages[0]);\n\n\t\t\t\t\t\t\t\tif (pageIndex > 0 && pageIndex % 25 === 0) {\n\t\t\t\t\t\t\t\t\t// eslint-disable-next-line no-restricted-syntax\n\t\t\t\t\t\t\t\t\tawait new Promise(resolve => setImmediate(resolve));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (isJpg) {\n\t\t\t\t\t\t\tconst img = await mergedPdf.embedJpg(fileDataBuffer as any);\n\t\t\t\t\t\t\tconst page = mergedPdf.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}\n\t\t\t\t\t\telse if (isPng) {\n\t\t\t\t\t\t\tconst img = await mergedPdf.embedPng(fileDataBuffer as any);\n\t\t\t\t\t\t\tconst page = mergedPdf.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}\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\tfinally {\n\t\t\t\t\t\tresponse = null;\n\t\t\t\t\t\tresponseData = null;\n\t\t\t\t\t\tfileDataBuffer = null;\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.buffer, mergedPDFUint8.byteOffset, mergedPDFUint8.byteLength);\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
|
}
|