[webkit-gtk] rendering a webpage to SVG
Carlos Alberto Lopez Perez
clopez at igalia.com
Thu Aug 20 16:57:19 PDT 2020
On 20/08/2020 12:24, Ivan Klimek wrote:
> Dear webkit-gtk developers,
>
> I am trying to render a webpage to SVG, I am successful in doing so
> using Qt webkit - but as you all know Qt webkit has been discontinued
> thus I am trying to migrate my code to webkit GTK
>
> the problem I am facing is that the generated SVG is only a wrapped PNG
> image of the rendered webpage, on Qt the webpage is rendered "all
> vector" texts etc all is "vectorized" an example of using this approach
> are apps like: http://cutycapt.sourceforge.net/ or https://wkhtmltopdf.org/
>
> my code is as follows (parts omitted for brevity):
>
> g_signal_connect(main_window, "damage-event", G_CALLBACK(capture),
> main_window);
>
> static gboolean capture(GtkWidget *widget, GdkEvent *event, gpointer
> user_data)
> {
>
> fprintf(stderr, "damage event callback called..\n");
>
> cairo_surface_t *surface =
> gtk_offscreen_window_get_surface(GTK_OFFSCREEN_WINDOW(user_data));
>
Instead of getting the cairo surface from GTK, you can use the WebKitGTK
API directly with the functions webkit_web_view_get_snapshot*
Years ago I wrote a simple program that generates a png image from a
webpage with that. Check it here: https://github.com/clopez/wksnap
I tried now to use your example code to generate a svg image instead of
a png one [1], but I'm getting the same issue you comment of it
generating a svg image that is embedding a png one.
I'm unsure how to fix that. My limited understanding is that once you
get the cairo surface from webkit, that surface is already a bitmap
surface.. so I'm unsure if is possible to convert that back to a vector
surface. I wonder how QtWebKit did this??
Hope this helps.
Regards
[1] test patch to apply over wksnap: http://ix.io/2uLb
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 897 bytes
Desc: OpenPGP digital signature
URL: <http://lists.webkit.org/pipermail/webkit-gtk/attachments/20200821/84f18024/attachment.bin>
More information about the webkit-gtk
mailing list