Кукловод JS генерирует PDF из селектора
Я знакомлюсь с Puppeteer для использования в приложении Vue.js, но не могу понять, как сгенерировать PDF на основе определенного элемента на странице. Я могу успешно создать PDF на основе полной страницы, но это не идеально. Есть ли метод или класс, который я пропустил, который может это позволить? Я не мог найти цепной page
функция для фильтрации по селектору (ам), например:
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://what.a.fancy/website', {waitUntil: 'networkidle2'});
await page.$('.just-this-html').pdf(options);
Я видел, что есть page.$(selector)
функционировать, но я не уверен, как связать это с .then()
вызов, который может получить доступ к возвращенному HTML в PDF.
Спасибо!
1 ответ
Попробуй код это. await page.setContent()
page.setContent
пример
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com/', {waitUntil: 'networkidle2'});
const dom = await page.$eval('div.jsb', (element) => {
return element.innerHTML
}) // Get DOM HTML
await page.setContent(dom) // HTML markup to assign to the page for generate pdf
await page.pdf(options)
Поздно на вечеринку кукольников. Однако лучше поздно, чем никогда. Кто-то, достигнув здесь, должен проверить, может ли этот фрагмент быть полезным. Код, полученный из ответов выше:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch() //defaults to true
const page = await browser.newPage()
// Create PDF from your URL => replace my fictitious url with your own url for this to work!
await page.goto('https://932db2cf7b.ngrok.io/chapter/lesson.php', {waitUntil: 'networkidle2'})
const items = await page.$eval('#doto', (element) => {
return element.innerHTML
}) // Get DOM HTML elements
await page.setContent(items)
await page.pdf({ path: 'pdf/aip.pdf', format: 'A4' })
await browser.close()
})()
Это переводит элементы из div в pdf => aip в папку с именем pdf.
Надеюсь, включенные комментарии будут полезны
Удачного поиска в Google!