-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrender.js
43 lines (38 loc) · 1.31 KB
/
render.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
const fs = require('fs');
const puppeteer = require('puppeteer');
const filename = `receipt_t${new Date().getTime()}.pdf`;
const path = `./${filename}`;
let render = async (req, callback) => {
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox'],
ignoreHTTPSErrors: true,
headless: true
});
const page = await browser.newPage();
await page.setViewport({width: 1024, height: 768, deviceScaleFactor: 2});
await page.setJavaScriptEnabled(false);
await page.setRequestInterception(true);
// Captures first request only
page.once('request', request => {
// Fulfill request with HTML, and continue all subsequent requests
request.respond({body: req.body.content});
page.on('request', request => request.continue());
});
await page.goto(req.get('Referrer'), {waitUntil: 'networkidle0'});
// await page.emulateMedia('screen');
await page.pdf({
path: path,
format: 'A4',
printBackground: true,
scale: 0.8,
margin: {
top: '1cm',
bottom: '1cm',
left: '1cm',
right: '1cm'
}
}).then(callback, (error) => console.error(error));
await browser.close();
return fs.createReadStream(path);
};
module.exports = render;