使用QWebPage创建整个页面屏幕截图

时间:2012-01-31 19:59:13

标签: qt qwebpage

我正在使用Qt(Qt创建者的奇特浏览器示例)使用此代码创建网页截屏(从here获取并转换):

QImage *image = new QImage(view->page()->mainFrame()->contentsSize(), QImage::Format_ARGB32);
QPainter *painter = new QPainter(image);

view->page()->mainFrame()->render(painter);

painter->end();
image->save(view->title() + "png");

但它只会创建页面可见部分(视图端口)的屏幕截图。

如果我在开头添加此行,则会从整个页面创建屏幕截图,但问题是,每次页面加载时都会添加一个新的滚动条。

view->page()->setViewportSize(view->page()->mainFrame()->contentsSize());

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:11)

您只需要禁用滚动条:

page()->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);

有关完整示例,请使用我在3.5小时前在Capturing web pages博文中所描述的内容。此后的代码存储库已移至http://qt.gitorious.org/qt-labs/graphics-dojo

如果你注意上面的例子,就没有必要创建QWebView。您完全可以从QWebPage实例中完成工作。

答案 1 :(得分:4)

看起来“wkhtmltopdf”("wkhtmltopdf")具有正确的实现 - 在src / lib / imageconverter.cc中搜索“painter”。