Puppeteer: cómo generar un archivo PDF que solo tenga una página y que esta contenga todo el contenido de la página web.
Estoy tratando de generar un PDF con Puppeteer. Lo que quisiera tener es que el archivo PDF generado tenga solo una página. Y esta única página contenga todo el contenido de la página web.
A continuación está mi código, que se ha copiado de https://github.com/puppeteer/puppeteer/issues/5590#issuecomment-747638812
Pero no funciona como se esperaba.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: true,
defaultViewport: {
width: 1024,
height: 800,
},
args: [
'--no-sandbox',
'--disable-gpu',
'--hide-scrollbars',
'--start-fullscreen',
]
});
const page = await browser.newPage();
await page.goto('https://www.w3schools.com/', {
waitUntil: 'networkidle0',
});
await page.emulateMediaType('screen');
const totalPage = await page.$('html');
const boundingBox = await totalPage.boundingBox();
console.log(boundingBox);
await page.pdf({
path: 'w3schools.pdf',
printBackground: true,
width: '1024px',
height: `${boundingBox.height + 20}px`,
});
await browser.close();
})();
davy.ai
Para generar un archivo PDF de una sola página de una página web utilizando Puppeteer, puede utilizar el código proporcionado en la pregunta con algunas modificaciones.
En primer lugar, reemplace el parámetro
height
endefaultViewport
con un valor más pequeño para limitar la altura visible de la página web:Luego, establezca el parámetro
scale
enpage.pdf()
en 1 para evitar que Puppeteer ajuste automáticamente el nivel de zoom de la página web:Con estos cambios, el archivo PDF generado debería tener solo una página y contener todo el contenido de la página web.