Javascript 在将html转换为pdf时,是否有一种方法可以使用Puppeter针对特定元素并保留CSS?

Javascript 在将html转换为pdf时,是否有一种方法可以使用Puppeter针对特定元素并保留CSS?,javascript,node.js,puppeteer,headless,google-chrome-headless,Javascript,Node.js,Puppeteer,Headless,Google Chrome Headless,我想将一些html转换为pdf文件。问题是我只需要网页的一部分,当然不是所有的元素。因此,我想知道是否有一种方法可以将单个元素作为目标,例如使用特定的id,以便仅将该元素转换为pdf 我知道我可以做到这一点,例如: const dom = await page.$eval('div.jsb', (element) => { return element.innerHTML }) // Get DOM HTML await page.setContent(dom) // HTM

我想将一些html转换为pdf文件。问题是我只需要网页的一部分,当然不是所有的元素。因此,我想知道是否有一种方法可以将单个元素作为目标,例如使用特定的
id
,以便仅将该元素转换为pdf

我知道我可以做到这一点,例如:

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
但是,使用上面的代码不会保留CSS

使用
page.addStyleTag
手动添加css也不是一个选项,因为我试图转换为pdf的元素已经应用了大量css样式

所以问题仍然是,如何使用Puppeter转换页面上的单个元素(或者如果您知道其他方式/方法/库,那么当然也欢迎这些方式/方法/库)

例如,允许您在选项中指定
targetElement
,如下所示:

const options = {
   'targetElement': '#rightContent',
   'pagesize': 'A4',
}

不幸的是,它没有给我一致的结果。

我已经取得了一些类似的成功:

const myElement = await page.$('.my-el');
await page.evaluate(el => {
  el = el.cloneNode(true);

  document.body.innerHTML = `
    <div>
      ${el.outerHTML}
    </div>
  `;
}, myElement);
const pdf = await page.pdf(...)
const myElement=wait page.$(“.my el”);
等待页面。评估(el=>{
el=el.cloneNode(真);
document.body.innerHTML=`
${el.outerHTML}
`;
},髓鞘素);
const pdf=wait page.pdf(…)
但是,当我选择的元素包含Canvas元素时,它工作得不是很好


(代码基于此处示例)

您找到答案了吗?我有同样的要求!