Можно ли экспортировать часть HTML-страницы в изображение SVG?
Мне нужно векторное изображение википедии. К сожалению, Inkscape не может открыть файл HTML, и ни Opera, ни Chromium не могут сохранить страницу в формате SVG. Гуглить, гуглить, и еще больше гуглить ничего не получалось; в частности, "HTML2svg", по-видимому, означает функциональность, когда HTML "общается" с SVG-изображением внутри него. Кто-нибудь, как превратить HTML в SVG, или всю страницу или div на странице? Мне нужны стилизованные HTML, CSS и все.
8 ответов
Мне удалось найти сайт, который сделает конверсию для вас. Все, что вам нужно сделать, это вставить HTML между переносами строк, и он сделает все остальное. URL-адрес: http://www.hiqpdf.com/demo/ConvertHtmlToSvg.aspx
Я столкнулся с такой же потребностью и нашел следующие бесплатные утилиты, которые обещают, что это возможно:
WebVector - это конвертер HTML в SVG или PNG. Он преобразует документ HTML в векторное изображение в формате SVG или растровое изображение в формате PNG. Файлы стандартной векторной графики (SVG) могут быть отредактированы различными редакторами векторной графики, такими как Inkscape.
http://cssbox.sourceforge.net/webvector/CutyCapt - это небольшая кроссплатформенная утилита командной строки для захвата рендеринга WebKit веб-страницы в различные векторные и растровые форматы, включая SVG, PDF, PS, PNG, JPEG, TIFF, GIF и BMP. См. IECapt для аналогичного инструмента на основе Internet Explorer.
http://cutycapt.sourceforge.net/wkhtmltopdf и wkhtmltoimage - это инструменты командной строки с открытым исходным кодом (LGPL) для рендеринга HTML в PDF и различные форматы изображений с использованием механизма визуализации QT Webkit. Они работают полностью "без головы" и не требуют отображения или обслуживания дисплея. Существует также библиотека C, если вы в такой вещи.
http://wkhtmltopdf.org/
-
Вопросы без ответов: я знаю, что вы можете использовать что-то вроде rasterize.js для рендеринга объектов DOM в <canvas>
Но как эти библиотеки построены так, что они могут экспортировать SVG? В частности, можно ли использовать сам WebKit для вывода "идеального по пикселям" редактируемого SVG-содержимого веб-содержимого и фрагментов HTML-кода? Это относительно простая задача для библиотеки или это что-то значительно более сложное?
Вы можете попробовать wkhtmltoimage. Он может конвертировать HTML в SVG и многие другие форматы.
Попробовал совет xthexder: печать в файл. (А затем преобразование PDF в SVG.) Я попробовал Opera, Firefox и Chromium под Linux; обзор ниже. Жалко об ошибках Opera.
Я сделал этот ответ сообщества вики; дополнения для других ОС приветствуются.
Opera 11.61 (Linux)
- поддерживает печать в SVG(!), PDF и PS
- использует таблицу стилей автора (если вы не выберете другую таблицу стилей в меню "Вид" или не отключите CSS)
- С выводом PDF и PS текст не помещается в файл! Это очень странно и должно быть ошибкой.
- Если я выберу выход SVG, Opera выдаст
.svg
файл, но записывает в нем код PostScript.:-(
Firefox 11.0 (Linux)
- поддерживает печать в PDF и PS
- игнорирует таблицу стилей автора, печатает черно-белое изображение
- Использует шрифт DejaVu Serif в несколько большем размере
Chromium 17 (Linux)
- поддерживает печать только в PDF
- игнорирует таблицу стилей автора, печатает черно-белое изображение
- Использует Times New Roman
Самый простой способ, который я использую, - это распечатать веб-сайт из Google Chrome в формате PDF, обычно используя самый большой размер страницы, портретный режим и проверенную фоновую графику. Иногда в нем есть небольшие ошибки, но это намного лучше, чем все решения из других ответов.
вы можете использовать foreignObject в своем svg для определения элемента html в svg.
Если вы хотите преобразовать элементы html в элементы svg, такие как rect, text, image, вы можете использовать для этого htmlsvg.js.
живая демонстрация:https://htmlsvg.netlify.app/
Как упоминалось в принятом ответе, библиотека wkhtmltoimage - достойное решение, хотя и не всегда идеально. Сначала я был немного смущен тем, как его использовать, поэтому хотел бы поделиться своим текущим рабочим процессом:
- установите wkhtmltopdf и добавьте его в свой путь env var
- откройте свое веб-приложение и переведите его в любое состояние, которое хотите захватить
- используйте расширение браузера SingleFile, чтобы сделать его статический снимок в формате html
- бегать
wkhtmltoimage mySnapshot.html mySnapshot.svg
- откройте его в Inkscape, разгруппируйте изображение и извлеките интересующую вас часть векторизованной страницы
Вы можете попробовать http://www.letime.net/alpha/glm.html
это делает текст в HTML5 рисует в CSS3