Boa tarde! Vc pode utilizar a configuração headless = true
para remover a janela do browser que funciona com servidores sem interface gráfica. Segue a função para gerar qualquer pdf que utilizo com o pupperteer
async function generatePDF(url,puppeteerConf={})
{
if(browser==false)
browser = await puppeteer.launch({ headless: true, ignoreHTTPSErrors: true }); // Puppeteer can only generate pdf in headless mode.
const pdfConfig = Object.assign({
format:'A4',
landscape:true,
printBackground:true
}, puppeteerConf);
var returnedPdf = null;
const page = await browser.newPage().catch(err => {
if(browser)
browser.close();
browser=false;
throw 'newPage crash:'+err;
});
return new Promise( (resolve, reject) => {
page.on('error', (err) => {
try {
page.close();
} catch(e) { };
reject('page crash:'+err);
});
page.goto(url, {waitUntil: 'networkidle0', timeout: 25000} )
.then( () => {
if(typeof page['emulateMediaType']=='function')
page.emulateMediaType('screen');
else
page.emulateMedia('screen');
})
.then( () => page.pdf(pdfConfig) )
.then( pdf => { returnedPdf = pdf })
.then( () => page.close() )
.then( () => { resolve(returnedPdf); })
.catch(err => {
reject(err);
});
});
}