如何启用 Puppeteer 生成正确反映屏幕@media查询的 PDF

How to enable Puppeteer generate PDFs that correctly reflect screen @media queries

提问人:Ivan Gusev 提问时间:9/29/2023 最后编辑:Ivan Gusev 更新时间:9/29/2023 访问量:41

问:

屏幕媒体查询未在生成的 PDF 文件中正确应用。 Chrome 在处理屏幕@media查询时似乎忽略(或以某种方式不匹配)提供的页面宽度。 Puppeteer 版本 21.1.1

这是我尝试过的:

const browser = await puppeteer.launch({
  args: ['--no-sandbox'],
  headless: "new"
});
const page = await browser.newPage();
await page.setContent(content,{waitUntil:'networkidle0'});
await page.emulateMediaType('screen');
const pdfBuffer = await page.pdf({
  width: '1400px',
  height: '900px',
  printBackground: true
});

设置视口似乎对 PDF 渲染完全没有影响:

await page.setViewport({
  width: 1400,
  height: 900,
  deviceScaleFactor: 1
});

这是我拥有的css:content

@media (min-width: 1250px) { /* will work only if i change it into 1050px */
  .container {
    max-width: 540px;
  }
} 
节点 .js PDF 媒体查询 傀儡师 Chromium

评论


答:

0赞 Ivan Gusev 9/29/2023 #1

已在 chrome 117 版本中修复此问题。