Как стать автором
Обновить

Готовое решение markdown2pdf с исходным кодом для Linux

Время на прочтение3 мин
Количество просмотров9.7K

Предисловие


Markdown это прекрасный способ написать небольшую статью, а иногда и достаточно объемный текст, с несложным форматированием в виде курсива и толстого шрифта. Также Markdown неплох для написания статей с включением исходного кода. Но иногда хочется без потерь, танцев с бубном перегнать его в обычный, хорошо оформленный файл PDF, и чтобы не было проблем при конвертации, какие, например были у меня — нельзя писать по русски в комментариях исходного кода, слишком длинные строки не переносятся, а обрезаются и прочие мелкие проблемы. Инструкция позволит быстро настроить конвертер md2pdf не особенно вникая как это работает. Скрипт для более менее автоматической установки ниже в соотвествующем разделе.


Установка TexLive


Разумеется, можно установить только нужные части данного пакета. Но лично мне было откровенно лень искать минимально необходимую рабочую инсталляцию. Чтобы все точно работало, устанавливаем весь пакет TexLive. Он называется texlive-full и весит чуть больше 2х гигабайт, имейте данный факт в виду. Выполняем команду:


user@hostname:~$ sudo apt install texlive-full -y

После достаточно долгой установки можно переходить к следующему пункту.


Установка конвертера Pandoc


Pandoc — пакет Linux, позволяющий преобразовывать некоторые текстовые форматы в другие. В нем много интересных возможностей, с которыми вы можете ознакомится самостоятельно в интернете. Нас же интересует только возможность преобразование markdown файла в PDF. Проверим установлен ли Pandoc и если нет, то установим его. Например так:


user@hostname:~$ dpkg -s pandoc

Если в выводе написано что не установлен — устанавливаем:


user@hostname:~$ sudo apt install pandoc -y

Установка MD2PDF


Можно проследовать на страницу скрипта на GitHub, и дальше действовать по инструкции.


Или скачать архив, распаковать в любую папку, открыть ее в терминале и опять таки следовать инструкциям.


Откройте терминал и выполните:


git clone https://github.com/melichron/md2pdf.git && cd md2pdf

Затем выполните с правами суперпользователя, например:


sudo ./install.sh

Имейте в виду скрипт использует утилиту для построения консольных диалогов whiptail. Если она у вас не установлена, или ставить ее вы не желаете, или хотите все сделать сами, то установите texlive-full и pandoc вручную и действуйте по инструкции дальше.


Установка md2pdf для всех пользователей:


root@host:~/md2pdf# cp ./src/template.tex $(kpsewhich -expand-var='$TEXMFLOCAL')
root@host:~/md2pdf# echo "#!/bin/bash" | tee usr/local/bin/md2pdf
root@host:~/md2pdf# echo "pandoc --output=\$1.pdf --from=markdown_github --latex-engine=pdflatex --listings --template=$(kpsewhich -expand-var='$TEXMFLOCAL')/template.tex \$1" | tee -a usr/local/bin/md2pdf
root@host:~/md2pdf# chmod 755 /usr/local/bin/md2pdf

Установка md2pdf для текущего пользователя:


user@host:~/md2pdf$ cp ./src/template.tex $(kpsewhich -expand-var='$TEXMFHOME')
user@host:~/md2pdf$ echo "#!/bin/bash" | tee ~/.local/bin/md2pdf
user@host:~/md2pdf$ echo "pandoc --output=\$1.pdf --from=markdown_github --latex-engine=pdflatex --listings --template=$(kpsewhich -expand-var='$TEXMFHOME')/template.tex \$1" | tee -a ~/.local/bin/md2pdf
user@host:~/md2pdf$ chmod 755 ~/.local/bin/md2pdf

Использование md2pdf


Просто откройте папку с Markdown файлом (some_file.md) в Терминале, и выполните команду:


user@hostname:~$ md2pdf some_file.md

В результате в папке появится файл some_file.md.pdf.


Заключение


На базе описанного метода можно построить какой угодно стиль PDF файлов, также можно конвертировать вместо md другие форматы, любые поддерживаемые Pandoc. Смею надеятся что однажды это инструкция пригодится 3 с половиной людям.

Теги:
Хабы:
Всего голосов 17: ↑15 и ↓2+13
Комментарии17

Публикации

Истории

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область