diff --git a/print/core/report.js b/print/core/report.js index 4dad566f3..c5182d1a8 100644 --- a/print/core/report.js +++ b/print/core/report.js @@ -2,7 +2,7 @@ const fs = require('fs'); const path = require('path'); const config = require('./config'); const Component = require('./component'); -const puppeteer = require('puppeteer'); +const Cluster = require('./cluster'); if (!process.env.OPENSSL_CONF) process.env.OPENSSL_CONF = '/etc/ssl/'; @@ -32,39 +32,30 @@ class Report extends Component { if (fs.existsSync(fullPath)) options = require(optionsPath); - const browser = await puppeteer.launch({ - headless: true, - args: [ - '--no-sandbox', - '--disable-setuid-sandbox', - '--single-process', - '--no-zygote' - ] + return new Promise(resolve => { + Cluster.pool.queue({}, async({page}) => { + await page.emulateMediaType('screen'); + await page.setContent(template); + + const element = await page.$('#pageFooter'); + + let footer = '\n'; + if (element) { + footer = await page.evaluate(el => { + const html = el.innerHTML; + el.remove(); + return html; + }, element); + } + + options.headerTemplate = '\n'; + options.footerTemplate = footer; + + const stream = await page.pdf(options); + + resolve(stream); + }); }); - - const page = (await browser.pages())[0]; - await page.emulateMediaType('screen'); - await page.setContent(template); - - const element = await page.$('#pageFooter'); - - let footer = '\n'; - if (element) { - footer = await page.evaluate(el => { - const html = el.innerHTML; - el.remove(); - return html; - }, element); - } - - options.headerTemplate = '\n'; - options.footerTemplate = footer; - - const buffer = await page.pdf(options); - - await browser.close(); - - return buffer; } /**