如何使用 QtWebEngine 捕获完整的网页?

Posted

技术标签:

【中文标题】如何使用 QtWebEngine 捕获完整的网页?【英文标题】:How to capture full web page using QtWebEngine? 【发布时间】:2019-03-22 08:34:41 【问题描述】:

我在 QWebEngineView 对象中使用以下代码将网页捕获到图像:

image=new QImage(w,h, QImage::Format_ARGB32);
painter = new QPainter(image);
render(painter);
image->save(imagefilename);

不幸的是,它仅将小部件上显示的网页的一部分呈现到图像中。如何将整个页面渲染到图片上?

【问题讨论】:

【参考方案1】:

可以hide webview 并调整其大小以显示整个网页。我正在使用 PyQt5(5.12 版),但这个想法也应该适用于 C++ Qt:

# Create hidden QWebEngineView
view.setAttribute(Qt.WA_DontShowOnScreen)
view.show()
...

# Resize the view and then capture image
def take_screenshot():
    view.grab().save(output_file, b'PNG')

size = view.page().contentsSize().toSize()
view.resize(size)
QTimer.singleShot(1000, take_screenshot)

【讨论】:

以上是关于如何使用 QtWebEngine 捕获完整的网页?的主要内容,如果未能解决你的问题,请参考以下文章

QtWebEngine:打印由 javascript 调用的网页

无法使用 selenium webdriver 3.0.0-beta3 捕获完整的网页截图

使用 QtWebEngine 将图像保存到磁盘

有没有办法在无头模式下运行 QtWebEngine

如何使用 QTWebEngine 为子窗口设置用户代理?

使用 VS 2015 构建 QtWebEngine 5.8 时如何禁用 Windows 10 功能?