Преобразование исходных файлов ASCII в JPEG - PullRequest
9 голосов
/ 25 июля 2009

Я публикую технические книги в печатном виде, в формате PDF и Kindle / MOBI, где уже есть EPUB.

Kindle не поддерживает моноширинные шрифты, которые могут быть полезны для распечатки исходного кода. Единственный способ сделать моноширинные шрифты - это преобразовать текст (исходный код Java, HTML, XML и т. Д.) В изображения JPEG. Более конкретно, из-за проблем с разбиением на страницы, заданный входной файл ASCII необходимо разбить на фрагменты по ~ 6 строк каждый, причем каждый фрагмент превращается в JPEG, чтобы списки могли занимать весь экран. Это королевская боль.

Мой текущий механизм, который делает это, включает:

  1. Запуск expand, чтобы установить согласованный размер табуляции в 2 пробела, который передает ...
  2. a2ps, который передает в ...
  3. Небольшой фрагмент Perl для добавления строки "%%LanguageLevel: 3\n", который передает в ...
  4. ImageMagick's convert,взять (E) PS и сделать из него JPEG, с соответствующим фоном, обрезанным до 575x148+5+28 и т. д.

Это раньше работало 100% времени. Теперь это работает 95% времени. В остальное время я получаю convert: geometry does not contain image ошибок, от которых, похоже, не могу избавиться, отчасти потому, что не понимаю, в чем проблема.

До этого процесса я использовалPretty-print engine (source-highlight) для извлечения HTML из исходного кода ... но тогда единственное, что я смог найти для преобразования HTML в JPEG, это автоматизировать захват экрана из встроенного движка Gecko. Надежность воняла, поэтому я переключился на свой текущий механизм.

Итак, если бы вы были вами, и вам нужно было бы автоматически преобразовывать списки источников в изображения JPEG, как бы вы это сделали? Бонусные баллы, если он предлагает какой-то симпатичный процесс печати (например, выделенные жирным шрифтом ключевые слова)!

Или, если вы знаете, что обычно вызывает convert: geometry does not contain image, это может помочь. Мой текущий процесс уродлив, но если бы я смог вернуть его к 100% -ной надежности, сейчас это было бы просто замечательно.

Заранее спасибо!

Ответы [ 5 ]

8 голосов
/ 26 июля 2009

Вы могли бы рассмотреть html2ps, а затем конвертировать imagemagick.

Мысль: если ваша цель (Kindle?) Поддерживает PNG, используйте это вместо JPEG для этой визуализации текста.

1 голос
/ 20 июня 2010

Поскольку на вопрос о преобразовании HTML в JPG был дан ответ, я предложу предложение по хорошему принтеру. Я нашел Pygments довольно удивительным. Он поддерживает различные темы и имеет лексеры для практически любого языка (они рекламируют тот факт, что он даже выделяет brainfuck ). Есть инструмент командной строки, и он доступен в большинстве дистрибутивов Linux.

1 голос
/ 19 мая 2010

html2ps - отличная программа - я использовал ее для создания книги на 1300 страниц один раз, но это излишне, если вам нужен простой текст -> postscript. Вместо этого рассмотрим подвох.

0 голосов
/ 11 мая 2010

Не используйте JPEG. Он оптимизирован для фотографий и делает ужасную работу с текстом и штриховой графикой. Используйте вместо этого GIF или PNG. Насколько я понимаю, gif теперь не имеет патентов, поэтому я бы просто использовал это.

0 голосов
/ 28 августа 2009

Ваш дистрибутив Linux может включать в себя pango-view и ассортимент шрифтов. Это работает в моей системе FC6:

pango-view --font=DejaVuLGCSansMono --dpi=200 --output=/tmp/text.jpg -q /tmp/text

Вам нужно будет указать моноширинный шрифт, который установлен в вашей системе. Посмотрите вокруг /usr/share/fonts/.

Pango поддерживает Unicode.

Если вы не экспериментируете с опцией -q, она будет отображаться в окне, а не в файле.

...