Hi

Am 08/09/2020 um 18:44 schrieb Tim Roberts:
Dennis Pielken wrote:
...
I want to use QWebEngineView to create a screenshot of a complete web page. This is mostly working for “shorter pages”, but it is not working for longer pages.

The only solution to take a screenshot of a complete webpage is to resize the QWebEngineView to the contentSize of QWebEnginePage. The following code is working for shorter pages (self inherits QWebEngineView):
...
generates the following errors:
   QOpenGLFramebufferObject: Framebuffer incomplete attachment.
...
   QOpenGLFramebufferObject: Framebuffer incomplete attachment.
   QOpenGLFramebufferObject: Framebuffer incomplete, missing attachment.
   [13092:9676:0908/151509.277:ERROR:gles2_cmd_decoder.cc(5678)]
   GLES2DecoderImpl::ResizeOffscreenFramebuffer failed to allocate
   storage due to excessive dimensions.
...
This error can be reproduced with longer Facebook timelines as well.

The gles2 errors (the last three lines) are repeated indefinitely. I have not found a way to fix this. I have checked that the page is not bigger than the maximum size of the widget.

What do you mean by that?  Facebook pages can be infinitely long; they generate new data as you scroll toward the bottom of what was already sent.  There are limits to the size of bitmaps, and of course there are limits to your memory.  Even the browsers don't store the whole page in memory as a bitmap.

I may have described the problem not detailed enough. I want to create a screenshot of the webpage in the state that has been loaded by the user.  Therefore, the page will always have a finite height / width.

An example page, where the problem occurs, is www.heise.de - just scroll down until you reach the end and screenshot code will fail.

Before I resize QWebEngineView, I check that contentSize is not bigger than qwidget.maximumHeight. Therefore, the resize should be possible (?) But it fails.

I know about possible work-around (just don't resize, grab the current widget, set all elements withposition:fixed to non-fixed and scroll down, but then you have do deactivate any kind of dynamic reload so that no additional data is being loaded by scrolling). Therefore, I would like to achieve this without scrolling in the page.

I do understand that QImage and QPixmap have a maximum size and therefore (in case the resize work), I have to grab() the widget in chunks. But I don't even reach this ;)

Am I missing anything or is it just not possible?

_______________________________________________
PySide mailing list
PySide@qt-project.org
https://lists.qt-project.org/listinfo/pyside

Reply via email to