El vie, 21-08-2020 a las 10:45 +0200, Ivan Klimek escribió: > Hi Carlos, > > thanks for your fast reply > > not sure if this helps or if your question was addressed to me - from > my *very* limited understanding - how its done its done in Qt - they > have the qt_svg module that implements methods that directly write > vectorized SVG elements: > > void drawEllipse(const QRectF &r) override; > void drawPath(const QPainterPath &path) override; > void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF > &sr) override; > void drawPolygon(const QPointF *points, int pointCount, > PolygonDrawMode mode) override; > void drawRects(const QRectF *rects, int rectCount) override; > void drawTextItem(const QPointF &pt, const QTextItem &item) > override; > void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, > Qt::ImageConversionFlags flags = Qt::AutoColor) override; > > see here: > https://github.com/qt/qtsvg/blob/dev/src/svg/qsvggenerator.cpp > > from code its used like this: > > QWebFrame *frame = m_page.mainFrame(); > QPainter painter; > QSvgGenerator svg; > > svg.setFileName(fileName); > svg.setSize(resolution); > > painter.begin(&svg); > > frame->render(&painter); > > and that's all - output is vector SVG - every text / formatting etc > all vector
Is that QtWebKit using WebKit1 or WebKit2? > cairo is able to draw to SVG vectorized too, but the surface types > need to be set correctly when drawing, I took a very light look at > webkit-gtk cairo usage and cairo surface types are image types / aka > bitmap so it draws stuff already to bitmap, and once in bitmap there > is no way back :( but maybe I am reading this wrong, not sure > > *I do not know why this is done the way it is done in webkit-gtk, > maybe it would be possible to just internally use svg surfaces?* > > would be epic if webkit-gtk could do something like that as Qt Webkit > is dead and there are so many projects using this ... > > Thanks > Ivan > > > On Fri, Aug 21, 2020 at 1:57 AM Carlos Alberto Lopez Perez < > clo...@igalia.com> wrote: > > 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 > > > > _______________________________________________ > webkit-gtk mailing list > webkit-gtk@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-gtk -- Carlos Garcia Campos http://pgp.rediris.es:11371/pks/lookup?op=get&search=0xF3D322D0EC4582C3
signature.asc
Description: This is a digitally signed message part
_______________________________________________ webkit-gtk mailing list webkit-gtk@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-gtk