Can I export part of an HTML page to an SVG image?
Solution 1
I've come across the same need and found the following free utilities which hold promise that this is possible:
WebVector is an HTML to SVG or PNG convertor. It converts a HTML document into a vector image in SVG format or a bitmap image in PNG format. The Standard Vector Graphics (SVG) files can be further edited by a variety of vector graphics editors such as Inkscape.
http://cssbox.sourceforge.net/webvector/CutyCapt is a small cross-platform command-line utility to capture WebKit's rendering of a web page into a variety of vector and bitmap formats, including SVG, PDF, PS, PNG, JPEG, TIFF, GIF, and BMP. See IECapt for a similar tool based on Internet Explorer.
http://cutycapt.sourceforge.net/wkhtmltopdf and wkhtmltoimage are open source (LGPL) command line tools to render HTML into PDF and various image formats using the QT Webkit rendering engine. These run entirely "headless" and do not require a display or display service. There is also a C library, if you're into that kind of thing.
http://wkhtmltopdf.org/
--
Unanswered Questions: I know that you can use something like rasterize.js to render DOM objects into <canvas>
, but how are these libraries built such that they are able to export SVG? Specifically, can WebKit itself be used to output "pixel-perfect" editable SVG of web content and HTML snippets? Is this a relatively simple task for a library or is this something significantly more complex?
Solution 2
I managed to find a website that will do the conversion for you. All you have to do is paste the HTML in between line breaks and it does the rest. The URL is: http://www.hiqpdf.com/demo/ConvertHtmlToSvg.aspx
Solution 3
You can try wkhtmltoimage It can convert HTML to SVG and many different formats
Solution 4
Tried xthexder's advice: printing to file. (And then converting PDF to SVG.) I tried Opera, Firefox, and Chromium under Linux; overview below. Real pity about Opera's bugs.
I've made this answer community wiki; additions for other OSes welcome.
Opera 11.61 (Linux)
- supports printing to SVG(!), PDF, and PS
- uses author style sheet (unless you choose a different style sheet from the View menu, or disable CSS)
- With PDF and PS output, no text is put in the file! This is v. strange and must be a bug.
- If I choose SVG output, Opera produce a
.svg
file but writes PostScript code in it. :-(
Firefox 11.0 (Linux)
- supports printing to PDF and PS
- ignores author style sheet, prints in black and white
- Uses DejaVu Serif font in a somewhat large size
Chromium 17 (Linux)
- supports printing to PDF only
- ignores author style sheet, prints in black and white
- Uses Times New Roman
Solution 5
As mentioned in the accepted answer, the wkhtmltoimage library is a decent solution, though it isn't always perfect. I was at first a little confused about how to use it, so I'd like to share my current workflow:
- install wkhtmltopdf and add it to your path env var
- open your web app and put it in whatever state you want to capture
- use the SingleFile browser extension to make a static html snapshot of it
- run
wkhtmltoimage mySnapshot.html mySnapshot.svg
- open it in Inkscape, ungroup the image and extract the part of the now-vectorized page you're interested in
Esteis
Updated on March 24, 2021Comments
-
Esteis about 3 years
I need a vector image of a Wikipedia navbox. Unfortunately, Inkscape can't open the HTML file, and neither Opera nor Chromium can save the page as SVG. Googling, googling, and yet more googling turned up nothing; in particular, 'HTML2svg' seems to mean functionality where the HTML 'talks to' an SVG image inside it. Does anybody how to turn HTML into SVG, either the entire page or a div on the page? I need the styled HTML, CSS and all.
-
Erik Dahlström over 11 yearsOpera doesn't itself produce SVG output when printing, but the printer driver (not controlled by Opera) may translate the drawing commands and allow saving to different file formats e.g svg.
-
David Silva Smith over 9 yearsso perfect! Just saved me HOURS! And improved the quality of what I was doing! So nice it gets the text as font and everything! I couldn't be happier
-
MeatFlavourDev over 9 yearsI don't like that it's not a free solution :( Boo expensive licences.
-
Esteis over 9 yearsOw. 395 US$ for a one-person license is incredibly expensive. That was certainly not in place when I accepted this answer. I'll still leave this answer accepted, but if something comparable and less expensive (or libre) comes along I expect I shall change the accepted answer over.
-
IKavanagh over 8 yearsWelcome to Stack Overflow! While this may answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.
-
Esteis over 8 yearsHi Pierre, thank you very much for your answer. glm seems to be a program to turn text into HTML, right? My question is looking for a way to turn HTML+CSS into a vector image, so I cannot accept your answer; but have an upvote, and enjoy Stack Overflow!
-
Maciej Paprocki over 8 yearsCan we change accepted answer then? It's shame to have to scroll to third answer :)
-
Newton Sheikh about 6 years@Bmize729 God bless you
-
krassowski almost 6 yearsI would add using chrome in the headless mode to this (great) list; see stackoverflow.com/a/50050884/6646912 for more info
-
Randall Whitman about 5 yearsSee my comments on these three methods at - superuser.com/questions/579933/…
-
Randall Whitman about 5 yearsThis method produces a nice all-vector result. It also produces the largest file, of the methods I've tried out on a small HTML form with radio buttons.
-
Esteis almost 5 years@MaciejPaprocki: Done. I'm sorry it took me so long to get around to it, I felt I had to test the solutions before accepting, and never found the time.
-
Maciej Paprocki almost 5 years@Esteis you should get an award for xoming back after 4 years!
-
Esteis almost 5 years@MaciejPaprocki And you should get one for being enthusiastic and supportive! :D Thanks again for the comment pointing at the newer&better answer, and I hope you have a lovely weekend. <3
-
Ian Mackinnon about 2 yearsIt's worth noting that this converts text to paths, which may or may not be desirable, depending on the use case.