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);
        });
    });
}