pdfGenerator.js
956 Bytes
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
/**
* Created by Tommy Huang on 18/04/26.
*/
const fs = require('fs')
const path = require('path')
const util = require('util')
const pdf = require('html-pdf')
class PDFGenerator {
constructor(type, data) {
this.src = type === 'loan' ? path.join(__dirname, '/template/loanAgreement.html') : path.join(__dirname, 'template/serviceAgreement.html')
this.data = data
this.file = undefined
this.parsedStr = ''
this.load()
}
load() {
this.file = fs.readFileSync(this.src).toString('utf-8')
this.parse(this.file)
}
parse(rawStr) {
const search = /\{\{([a-zA-Z]+)\}\}/g
this.parsedStr = rawStr.replace(search, (match, key) => {
return this.data[key]
})
console.log(this.parsedStr)
}
async generate() {
const newPDF = pdf.create(this.parsedStr)
const asyncToBuffer = util.promisify(newPDF.toBuffer).bind(newPDF)
return await asyncToBuffer()
}
}
module.exports = PDFGenerator