-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenCert.js
49 lines (35 loc) · 1.29 KB
/
genCert.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
const fs = require("fs");
const path = require("path");
const PDFLib = require('pdf-lib');
const PDFDocument = PDFLib.PDFDocument;
const details = require('./eventDetails')
const authifyMailer = require('./authifyMailer')
function delay(time) {
return new Promise(resolve => setTimeout(resolve, time));
}
const genCert = async (name,email) => {
// reading template
const content = await fs.readFileSync(path.resolve(__dirname, "template.pdf"));
// load template
const pdfDoc = await PDFDocument.load(content);
// filling details
const form = pdfDoc.getForm();
const A_NAME = form.getTextField('A_NAME');
const E_NAME = form.getTextField('E_NAME');
const Y_NAME = form.getTextField('Y_NAME');
A_NAME.setText(name);
E_NAME.setText(details.eventName);
Y_NAME.setText(details.ambassadorName);
// make form immutable
form.flatten();
// save pdf buffer
const pdfBytes = await pdfDoc.save();
// write buffer to a new file
const outputPath = path.resolve(__dirname+'/certificates',`cert_${name}.pdf`);
await fs.writeFileSync(outputPath,pdfBytes);
// mailing
await delay(15000).then(async () => {
await authifyMailer(email,details.subject,details.body,outputPath,"certificate.pdf")
});
}
module.exports = genCert;