google-chrome-devtools - puppeteer 中的旋转视口(viewport)

标签 google-chrome-devtools puppeteer google-chrome-headless

我正在尝试使用 puppeteer 模拟旋转视口(viewport)( headless Chrome)。我的意思是我希望输出旋转一定量(通常为 90 度)。

我目前使用的代码是:

const puppeteer = require('puppeteer');
var myExpressRoute = function (req, res, next) {
    (async () => {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        page.setViewport({width: 500, height: 350});
        await page.goto('https://example.com');
        var screenshotBuffer = await page.screenshot();
        res.header('Content-Type', 'image/png');
        res.send(screenshotBuffer);
        await browser.close();
    })();
};

生成的截图是:


enter image description here


但我希望它像这样生成:


enter image description here


是的,可以使用另一个库来旋转 puppeteer 的输出,但是有没有一种方法可以在 puppeteer 中本地执行此操作,以避免必须执行单独的旋转?

否则,在发送到 res 之前通过旋转操作传递 screenshotBuffer 的最佳工具是什么(不需要保存到图像文件并旋转它的工具)图片文件)?

最佳答案

您可以使用 rotate() CSS 函数结合page.evaluate()在截图之前旋转屏幕:

原始截图:

/**
 * Original Screenshot
 */

await page.setViewport({
  width: 500,
  height: 350,
});

await page.screenshot({
  path: 'original-screenshot.png',
});

旋转屏幕截图:

/**
 * Rotated Screenshot
 */

await page.setViewport({
  width: 350,
  height: 500,
});

await page.evaluate(() => {
  document.body.style.transform = 'rotate(-90deg)';
});

await page.screenshot({
  path: 'rotated-screenshot.png',
});

关于google-chrome-devtools - puppeteer 中的旋转视口(viewport),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47714156/

相关文章:

css - Chrome Dev Tools RGBA/HSL 转换为一些新格式

javascript - 在 Chrome Dev 中的函数调用上设置断点。模式

javascript - 如何从 Puppeteer 中的 page.evaluate() 返回数据,当 JavaScript 中的浏览器中有 Promise.all() 时

javascript - Puppeteer - Page.evaluate 使用 moment

javascript - 单击 puppeteer 中包含文本的元素

css - 为什么google-chrome-devtools通过XPath识别的元素数量少于通过CssSelector识别的元素数量

ios-webkit-debug-proxy 空白 devtools

node.js - Puppeteer:以 headless 模式保存 PDF 文件

python - 通过 Selenium Python 在正常/ headless 模式下使用 ChromeDriver/Chrome 访问 Cloudflare 网站有什么区别

ruby-on-rails - 在 headless Chrome 中启用/查看 console.log 消息