Преобразуйте HTML для обработки изображений

Фон

Пакетное преобразование различные выделенные синтаксисом исходные файлы (C, SQL, Java, PHP, пакет, удар) в изображения с высоким разрешением (600 точек на дюйм), подходящих для электронной книги и распечатанной книги.

Неудавшиеся решения

Много попыток до сих пор:

  • OpenOffice или LibreOffice - должны повторно импортировать исходный код в документ каждый раз изменения исходного файла. (Таким образом, решение не может быть легко автоматизировано для сотен или тысяч исходных файлов.)
  • enscript. Не может легко изменить цвета, недостаточно хорошо вывод рендеринга, не всесторонний.
  • LyX / ЛАТЕКС. Недостаточно хорошо рендеринг производится.
  • gvim к HTML — HTMLDOC к PostScript — GhostScript к PNG. HTMLDOC игнорирует font теги.
  • gvim к HTML — html2ps — GhostScript к PNG. Цвета RGB не распознаны html2ps.
  • Firefox к PostScript — GhostScript к PNG. Неприятно окольный.
  • gvim к HTML — OmniFormat к чему-либо. Бесплатная версия, неподходящая для пакетной обработки; большая реклама всплывающих окон.
  • пигменты. Не может легко изменить разрешение изображения; не имеет диапазона gvim цветовых схем.

Самое близкое решение

Решение, которое почти работает:

  • gvim к HTML — wkhtmltopdf к PDF. Потребует последующей обработки с ImageMagick (wkhtmltoimage, не может установить разрешение изображения, только страница width).

Требования

  • Windows и Linux, но любой приемлем.
  • Свободный или OSS
  • Командная строка только (подходящий для пакетной обработки)
  • Легко измените цветовую схему
  • Поддержка: PHP, пакет, удар, Java, JavaScript, R, C, и SQL

Вопрос

Какие-либо другие способы преобразовать выделенный синтаксисом исходный код в изображение (на 600 точек на дюйм) с высоким разрешением?

Спасибо!

22
задан 01.04.2011, 10:36

3 ответа

Требования к программному обеспечению

Следующие пакеты программного обеспечения доступны и для Windows и для систем Linux, и требуются для полного, рабочего решения:

  • gvim - Используемый для экспорта синтаксиса выделил исходный код к HTML.
  • moria - Цветовая схема для подсветки синтаксиса.
  • wkhtmltoimage - Используемый для преобразования документов HTML файлам PNG.
  • простофиля и sed - инструменты обработки текста.
  • ImageMagick - Используемый, чтобы обрезать PNG и добавить границу.

Общие шаги

Вот то, как решение работает:

  1. Загрузите исходный код в редактора, который может добавить всплески цвета.
  2. Экспортируйте исходный код как документ HTML (со встроенным FONT теги).
  3. Разделите фоновый атрибут из документа HTML (для разрешения прозрачности).
  4. Преобразуйте документ HTML файлу PNG.
  5. Обрежьте границу PNG.
  6. Добавьте маленькую, границу на 25 пикселей вокруг изображения.
  7. Удалите временные файлы.

Сценарий генерирует изображения, которые являются всеми одинаковыми ширина для исходных файлов, содержащих строки, которые являются всеми под 80 символами в длине. Исходные файлы со строками более чем 80 символов в длину приводят к изображениям, столь же широким по мере необходимости для сохранения всей строки.

Установка

Установите компоненты в следующие местоположения:

  • gvim - C:\Program Files\Vim
  • moria - C:\Program Files\Vim\vim73\colors
  • wkhtmltoimage - C:\Program Files\wkhtml
  • ImageMagick - C:\Program Files\ImageMagick
  • Gawk и Sed - C:\Program Files\GnuWin32

Примечание: ImageMagick назвали программу convert.exe, который не может заменить Windows convert команда. Из-за этого, полного пути к convert.exe должен быть трудно кодирован в пакетном файле (в противоположность добавлению ImageMagick к PATH).

Переменные среды

Установите переменную окружения PATH на:

"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\GnuWin32\bin"

Пакетный файл

Выполните его использование:

src2png.bat src2png.bat

Создайте названный пакетный файл src2png.bat путем копирования следующего содержания:

@ECHO OFF

SET NUMBERS=-c "set number"
IF "%2" == "" SET NUMBERS=

ECHO Converting %1 to %1.html...
gvim -e %1 -c "set nobackup" %NUMBERS% -c ":colorscheme moria" ^
  -c :TOhtml -c wq -c :q

REM Remove all background-color occurrences (without being self-referential)
sed -i "s/background-color: #......; \(.*\)}$/\1 }/g" %1.html

ECHO Converting %1.html to %1.png...
wkhtmltoimage --format png --transparent --minimum-font-size 80 ^
  --quality 100 --width 3600 ^
  %1.html %1.png

move %1.png %1.orig.png

REM If the text file has lines that exceed 80 characters, don't crop the
REM resulting image. (The book automatically shrinks large images to fit.)
REM The 3950 is the 80 point font at 80 characters with padding for line
REM numbers.
SET LENGTH=0
FOR /F %%l IN ('gawk ^
  "BEGIN {x=0} {if( length($0)>x ) x=length()} END {print x;}" %1') ^
DO (
  SET LENGTH=%%l
)
SET EXTENT=-extent 3950x
IF %LENGTH% GTR 80 SET EXTENT=

REM Trim the image height, then extend the width for 80 columns, if needed.
REM The result is that all images will be resized the same amount, thus
REM making the font size the same maximum for all source listings. Source
REM files beyond the 80 character limit will be scaled as necessary.
ECHO Trimming %1.png...
"C:\programs\ImageMagick\convert.exe" -format png %1.orig.png ^
  -density 150x150 ^
  -background none -antialias -trim +repage ^
  %EXTENT% ^
  -bordercolor none -border 25 ^
  %1.png

ECHO Removing old files...
IF EXIST %1.orig.png DEL /q %1.orig.png
IF EXIST %1.html DEL /q %1.html
IF EXIST sed*. DEL /q sed*.

Улучшения и приветствующаяся оптимизация.

Примечание: Последняя версия wkhtmltoimage правильно обрабатывает переопределение цвета фона. Таким образом строка для удаления CSS для цветов фона больше не необходима в теории.

9
ответ дан 07.12.2019, 09:59

чтение страницы справочника wkhtmltoimage:

 -d,    --dpi   <dpi>   Change the dpi explicitly

если это не помогает: взламывание вместе простое решение с QT и (включенный) WebKit довольно просто.

3
ответ дан 07.12.2019, 09:59

Можно также использовать, Открывать Office for Html-> командная строка формы преобразования PDF:

http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html

0
ответ дан 07.12.2019, 09:59

Теги

Похожие вопросы