Re: [*NIX] Конвертация HTML в PDF/PS из консоли.

Dma22

Есть следующая задача:
Я планирую купить нетбук, а соответственно хотел собрать максимально легковесную систему - dwm, surf (или uzbl) в качестве браузера, mutt/alpine в качестве почтовика, mcabber в качестве IM, ну и так далее. Осталась только одна проблема (и довольно острая) - создание документов. Довольно долго я искал что-то, что позволяет создавать rtf (AbiWord ужасен, но это мое субъективное мнение) - есть только недавно обновленный Ted (но его еще не допилил автор в любом случае). Смотрел в сторону troff/LaTeX, но к первому жуткая документация, а второй для моих нужд явно избыточен (я в основном создаю документы <30 страниц с нестрогим оформлением плюс оба не умеют нормально конвертировать в rtf (troffcvt и latex2rtf оба давно не развиваются). Потом плюнул, начал думать о том, как делать документы в PDF/PS. Есть, конечно, lout - но он тоже для моих нужд избыточен (хотя и менее, чем LaTeX). Начал смотреть в сторону lightweight markup languages. Но их можно условно поделить на три категории:
-инструменты для получения HTML-кода без знания оного - во главе с MarkDown. Соответственно, как правило только в него и выводят.
-инструменты для получения LaTeX/troff кода(вроде txt2tags). Могут выводить в PDF/PS, но нужен установленный LaTeX (а troff я так и не научил дружить с кириллицей - кроме того в таких языках речь обычно идет о макросах man, а не ms/mm/me/mom)
-инструменты для написания документации (всякие asciidoc-и, POD-ы и прочее). Как правило поддерживают вывод в LaTeX/man/etc, но не напрямую в PDF/PS.
В итоге меня подкупил MarkDown. Да, я знаю - есть multimarkdown и pandoc, которые умеют выводить во все, что угодно. Но мне понравился Discount - реализация на С (что мне нравится, так как не хочу добавлять поддержку дополнительных языков - чтобы сократить количество пакетов. Во-первых, это все тот же MarkDown (с некоторыми расширениями во-вторых - с поддержкой SmartyPants (фича для замены пунктуации на правильные с точки зрения типографики - мелочь, а приятно в-третьих - он на С и маленький. Но есть только одна проблема - генерирует он только xhtml.
В итоге проблема - как получить PDF/PS? Конечно, всегда можно открыть html-ник в FF/Opera и распечатать в файл. Но это неудобно (тем более, что нужен FF/Opera) - нельзя автоматически делать прямо из редактора (скажем прямо - из VIM-а нельзя вызывать из консоли. Через CUPS напрямую - вроде бы нельзя (он такое умеет только с обычным текстом вроде). Вот тут мне и нужна ваша помощь.
Нужен способ просто и быстро делать из xhtml pdf (или postscript) из консоли. Желательно, чтобы при этом можно было управлять полями/нумерацией/расположением страницы (portrait/landscape)/размером страницы (поскольку все это нельзя сделать в MarkDown/xhtml).
P.S.: правильно ли я понимаю, что Adobe Reader может читать postscript? (хотя конечно можно его просто переделывать в pdf через psutils, но все же)
P.P.S.: пардон за длинную предысторию - просто хотел поделиться, если кто-то решает такую же проблему.

kruzer25

Всё-таки, тех для твоей цели подходит больше, чем хтмл. Как бы для него на разработку соответствующих утилит потратили куда больше времени.

Dma22

Да дело в том, что форматирование в моем случае действительно важно скорее для меня - текст все равно в итоге будут верстать другие люди. Однако на этапе обсуждения важно, чтобы были выделены заголовки/списки, стояли картинки/таблицы, выделены ключевые понятия - все это есть в markdown - с поистине простым синтаксисом. Именно поэтому я и хочу все-таки попробовать решить именно эту задачу. В крайнем случае - пойду изучать вопрос о том, как все-таки прикрутить русский к lout (он тоже на С, все пакеты занимают на диске менее 5 мегабайт).

kruzer25

Ну тогда попробуй погуглить на тему HTML->DocBook или HTML->TeX. Думаю, комбайн вроде HTML->DocBook->XSL-FO->PDF будет работать гораздо лучше, чем какая-нибудь наколенная программа, предназначенная для конвертации именно HTML в PDF. На первом шаге налажать особенно негде, а для второго и третьего хорошие утилиты уже есть.

Viktory-s

html2ps
htmldoc

Dma22

Вот htmldoc очень интересен (сейчас просто глянул в Synaptic-е описание пакета). Как появится интернет - обязательно гляну. Если не сложно - может кто-нибудь перепроверить одну вещь - например, просто вбить в поиск по пакетам на сайте Archlinux (ну или gentoo-portage) - неужели он действительно зависит от libfltk? Fltk - это же вроде бы тулкит, на котором в свое время например dillo был написан - но зачем он такой тулзе? Просто интересно, так как мейнтейнеры бубунты часто добавляют абсолютно лишние зависимости (помню как пробовал ставить написанную на Mono тулзу Incollector, так из репозитария с ним вытянулась документация по разработке на Mono, хотя сама программа - просто навороченная записная книжка а-ля Google Notebook или Tomboy).

alfadred

Вот htmldoc очень интересен (сейчас просто глянул в Synaptic-е описание пакета). Как появится интернет - обязательно гляну. Если не сложно - может кто-нибудь перепроверить одну вещь - например, просто вбить в поиск по пакетам на сайте Archlinux (ну или gentoo-portage) - неужели он действительно зависит от libfltk? Fltk - это же вроде бы тулкит, на котором в свое время например dillo был написан - но зачем он такой тулзе?
У htmldoc есть GUI. В Арче он тоже от FLTK зависит.
Просто интересно, так как мейнтейнеры бубунты часто добавляют абсолютно лишние зависимости (помню как пробовал ставить написанную на Mono тулзу Incollector, так из репозитария с ним вытянулась документация по разработке на Mono, хотя сама программа - просто навороченная записная книжка а-ля Google Notebook или Tomboy).

$ sudo aptitude install --without-recommends <что-то>

Dma22

Спасибо. Если не сложно - можете глянуть документацию в пакете исходников - гуй нельзя отключить при сборке?

alfadred

Спасибо. Если не сложно - можете глянуть документацию в пакете исходников - гуй нельзя отключить при сборке?
Можно.
configure: WARNING: FLTK not available so no GUI will be built.

Dma22

О, гениально Я, конечно, имел ввиду через --configure, но так значительно круче - мне бы в голову не пришло)
Оставить комментарий
Имя или ник:
Комментарий: