Ответ 1
webkit2png. Исходная версия - только OSX, но, к счастью, есть кросс-платформенная fork: https://github.com/AdamN/python-webkit2png
Я хочу преобразовать следующий образ HTML в PNG в Python.
<html>
<b>Bold text</b>
</html>
Этот HTML, конечно, является примером.
Я попробовал "pisa", но он конвертирует html в PDF, а не в изображение. Я могу конвертировать HTML в PDF, а затем конвертировать PDF в PNG, но мне было интересно, есть ли какое-либо прямое решение (например, HTML для PNG). Любой встроенный или внешний модуль будет работать хорошо.
Если это можно сделать в Graphicsmagick или Imagemagick, то это будет прекрасно.
webkit2png. Исходная версия - только OSX, но, к счастью, есть кросс-платформенная fork: https://github.com/AdamN/python-webkit2png
Чтобы расширить на vartec ответ, также объясните, как его использовать...
Установить webkit2png
Самый простой способ - это просто клонировать репозиторий github и запускать настройку.
mkdir python-webkit2png
git clone https://github.com/adamn/python-webkit2png.git python-webkit2png
python setup.py install
Для этого необходимо установить python и git. Для cygwin это добавит webkit2png в качестве команды к пути. Я не тестировал это для других терминалов/ОС.
Запустить его
Скажем, у вас есть ваш сайт в текущем каталоге. (У меня был html файл, который использовал таблицу стилей CSS, но нет необходимости думать о файле css.)
webkit2png something.html -o something.png
Опции webkit2png -h
сообщает нам:
Options:
--version show program version number and exit
-h, --help show this help message and exit
-x WIDTH HEIGHT, --xvfb=WIDTH HEIGHT
Start an 'xvfb' instance with the given desktop size.
-g WIDTH HEIGHT, --geometry=WIDTH HEIGHT
Geometry of the virtual browser window (0 means
'autodetect') [default: (0, 0)].
-o FILE, --output=FILE
Write output to FILE instead of STDOUT.
-f FORMAT, --format=FORMAT
Output image format [default: png]
--scale=WIDTH HEIGHT Scale the image to this size
--aspect-ratio=RATIO One of 'ignore', 'keep', 'crop' or 'expand' [default:
none]
-F FEATURE, --feature=FEATURE
Enable additional Webkit features ('javascript',
'plugins')
-c COOKIE, --cookie=COOKIE
Add this cookie. Use multiple times for more cookies.
Specification is value of a Set-Cookie HTTP response
header.
-w SECONDS, --wait=SECONDS
Time to wait after loading before the screenshot is
taken [default: 0]
-t SECONDS, --timeout=SECONDS
Time before the request will be canceled [default: 0]
-W, --window Grab whole window instead of frame (may be required
for plugins)
-T, --transparent Render output on a transparent background (Be sure to
have a transparent background defined in the html)
--style=STYLE Change the Qt look and feel to STYLE (e.G. 'windows').
--encoded-url Treat URL as url-encoded
-d DISPLAY, --display=DISPLAY
Connect to X server at DISPLAY.
--debug Show debugging information.
--log=LOGFILE Select the log output file
Значимыми параметрами являются установка ширины и высоты.
Поиск проблемы
Используя cygwin, я столкнулся с webkit2png: cannot connect to X server :0.0
. Чтобы исправить это (я уже выполнил export DISPLAY=0.0
), мне пришлось запустить X-Server. На cygwin это можно сделать, запустив startxwin
во втором терминале. Обязательно установите его сначала с помощью настройки cygwin.
Другим возможным решением является использование GrabzIt бесплатного HTML для Image API для Python. Затем вы можете преобразовать свой HTML в PDF-код следующим образом:
import GrabzItClient
grabzIt = GrabzItClient.GrabzItClient("APPLICATION KEY", "APPLICATION SECRET")
grabzIt.HTMLToImage("<html><b>Bold text</b></html>")
grabzIt.SaveTo("test.png")
Полное раскрытие Я создатель API.
Смотрите эту тему: HTML для изображения в javascript или python и это: Python - отображает HTML-контент в GIF-изображение