-
-
Notifications
You must be signed in to change notification settings - Fork 295
Open
Description
Hi, I'm having troubles sometimes with generating pdf...
Code
/** ****************************************************************************************
* Use puppeteer for generating our pdf from the html document
**************************************************************************************** */
console.info('Will start soon the browser')
const browser = await chromium.puppeteer.launch({
args: chromium.args,
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: true,
ignoreHTTPSErrors: true,
pipe: true // Use pipe instead of websocket to avoid load issue
})
console.info('const browser = await chromium.puppeteer.launch(...)')
const page = await browser.newPage()
console.info('const page = await browser.newPage()')
await page.setBypassCSP(true)
console.info('await page.setBypassCSP(true)')
await page.setContent(fileString, { waitUntil: ['load', 'domcontentloaded', 'networkidle0'] })
console.info('await page.setContent(...)')
let pdfBuffer = await page.pdf({
printBackground: true,
displayHeaderFooter: true,
headerTemplate: header,
footerTemplate: footer,
margin: {
top: `${styling.top + styling.headerSpacingOuter}mm`,
bottom: `${styling.bottom + styling.footerSpacingOuter}mm`,
left: `${styling.left}mm`,
right: `${styling.right}mm`
},
format: 'A4',
preferCSSPageSize: true
})
console.info('await page.pdf(...)')
await browser.close()
console.info('await browser.close()') errorType: 'Error',
stack: 'Error: Protocol error (Page.printToPDF): Target closed.\n' +
' at /opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js:208:63\n' +
' at new Promise (<anonymous>)\n' +
' at CDPSession.send (/opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js:207:16)\n' +
' at Page.pdf (/opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js:1220:43)\n' +
' at /var/task/index.js:649:30\n' +
I tried to add extra options from recommended ones and it behaves even crazier...
Options
const browser = await chromium.puppeteer.launch({
args: [
// From node_modules/chrome-aws-lambda/build/index.js
'--allow-running-insecure-content', '--autoplay-policy=user-gesture-required',
'--disable-component-update', '--disable-domain-reliability',
'--disable-features=AudioServiceOutOfProcess,IsolateOrigins,site-per-process',
'--disable-print-preview', '--disable-setuid-sandbox', '--disable-site-isolation-trials',
'--disable-speech-api', '--disable-web-security', '--disk-cache-size=33554432',
'--enable-features=SharedArrayBuffer', '--hide-scrollbars', '--ignore-gpu-blocklist',
'--in-process-gpu', '--mute-audio', '--no-default-browser-check', '--no-pings',
'--no-sandbox', '--no-zygote', '--use-gl=swiftshader', '--window-size=1920,1080',
'--single-process',
// Additional
'--disable-gpu', '--disable-dev-shm-usage', '--disable-sync', '--disable-breakpad',
'--disable-default-apps', '--disable-extensions', '--no-first-run',
'--disable-component-extensions-with-background-pages',
'--disable-client-side-phishing-detection',
'--run-all-compositor-stages-before-draw'
],
defaultViewport: chromium.defaultViewport,
executablePath: await chromium.executablePath,
headless: true,
ignoreHTTPSErrors: true,
pipe: true // Use pipe instead of websocket to avoid load issue
}) errorType: 'TimeoutError',
stack: 'TimeoutError: waiting for target failed: timeout 30000ms exceeded\n' +
' at Object.waitWithTimeout (/opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/common/helper.js:224:26)\n' +
' at Browser.waitForTarget (/opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Browser.js:296:45)\n' +
' at ChromeLauncher.launch (/opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/node/Launcher.js:105:31)\n' +
' at async /var/task/index.js:637:19\n' +
message: 'waiting for target failed: timeout 30000ms exceeded',
name: 'TimeoutError',
I'm using the latest version 10.1.0 with a lambda layer created out of this:
{
"name": "puppeteer-layer",
"version": "1.0.0",
"dependencies": {
"chrome-aws-lambda": "~10.1.0",
"puppeteer-core": "~10.1.0"
}
}I would really like to know what am I missing and how I can make the rendering more stable 😉
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels