122

Недавно я начал изучать Markdown для использования с документацией, и мне нужно распечатать несколько моих страниц Markdown. Я хотел бы использовать утилиту командной строки, Terminal и т.д., Которая позволяет конвертировать Markdown со вкусом Github в PDF. Он должен иметь правильную подсветку синтаксиса и не должен выглядеть ужасно. Спасибо за любую помощь.

11 ответов11

122

Мне удалось использовать ручку для отображения уценки в Chrome, а затем использовать Chrome "Сохранить как PDF" в диалоговом окне "Печать".

pip install grip  
grip your_markdown.md

grip отобразит уценку на localhost:5000 - просто отредактируйте и обновите браузер. Распечатайте, когда будете готовы.

Это дало более надежное представление, чем pandoc, и имело меньший вес, чем установка латекса (требуется pandoc для генерации pdf).

Печать не является командной строкой в этом ответе, но все же оказалось, что это проще / надежнее (на 100% выглядел как Github для длинного документа, включающего относительно связанные изображения и подсветку кода).

46

Вы также можете использовать Node.js на основе markdown-pdf

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
33

Посмотрите на Пандока. У него есть подсветка синтаксиса. Это может потребовать внесения (незначительных) изменений в ваш документ, так как он имеет собственный вид уценки, и я не знаю, насколько близко он соответствует вкусу GitHub.

11

Если файл уценки был размещен в репозитории github, gitprint - интересный вариант для создания pdf / print.

Все, что вам нужно сделать, это заменить github.com на gitprint.com в URL. Вот пример с домашней страницы gitprint.

К сожалению, он не работает со списками уценок и работает только с файлами уценок в хранилище.

7

На сайте http://www.markdowntopdf.com доступен онлайн-конвертер.
Это обеспечивает подсветку синтаксиса "из коробки" и является самым простым решением, которое я когда-либо видел. Он также правильно обрабатывает другие функции, специфичные для GFM, например таблицы.

6

Как я уже говорил в своем комментарии, Github использует Linguist для подсветки синтаксиса. На Github вы можете использовать это для указания подсветки синтаксиса следующим образом:

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

К сожалению, нет хорошего способа конвертировать Markdown напрямую в файл PDF с подсветкой синтаксиса.

Альтернативы:

Vim:

Если у вас есть vim, вы можете легко добиться подсветки синтаксиса, запустив в терминале следующее:

vim -c hardcopy -c quit /path/to/file.ps

Или внутри vim:

:hardcopy >/path/to/file.ps

Это создаст файл PostScript, который можно преобразовать в pdf, используя, например, ps2pdf:

ps2pdf /path/to/file.ps

Источник-подсветка:

Если вы хотите вместо этого пойти по пути HTML или LaTeX, вы можете вместо этого попробовать Source-highlight. Список всех языков, поддерживаемых Source-highlight, можно найти здесь.

Вот несколько примеров команд Source-highlight:

source-highlight -s java -f html -i Hello.java -o Hello1.html
source-highlight -s java -f html --input Hello.java --output Hello2.html --doc
source-highlight -s java -f html -i Hello.java -o Hello3.html --title "Happy Java with java2html :-)" --tab 3

Используя этот входной файл

И каждый выводит свой собственный соответствующий HTML-файл:

Hello1.html
Hello2.html
Hello3.html

Дополнительные примеры использования Source-highlight можно найти здесь

Windows:

Vim, ps2pdf (предоставленный Ghostscript) и Source-highlight доступны через Cygwin.

3

Недавно я создал сервис для преобразования документов уценки в PDF. Он поддерживает уценку Github, а также подсветку синтаксиса. Сервис находится по адресу: http://markdown2pdf.com

1

Я пробовал несколько плагинов Chrome и онлайн-конвертеры.
MDtr2PDF является лучшим. Он поддерживает Github-flavored-Markdown и Unicode.

1

Мое решение: конвертируйте разметку с помощью pandoc в html (не забудьте использовать css для pandoc для отображения границ таблицы), затем откройте ее с помощью libreoffice , выберите вариант export as pdf .

NB: ни одно из упомянутых здесь и в Интернете решений не работало для меня: 1) решения на основе браузера (например, сцепление) добавляют лишнюю информацию, например номера страниц, которую мне не удалось удалить, 2) преобразование pandoc в pdf сломанный, для меня он генерирует пустую таблицу (возможно, из-за юникода, и да, я настроил ее на использование xetex), 3) решения на основе сайтов (например, gitprint.com) также добавляют избыточные вещи, такие как github-подобные поля, тогда как Мне нужна простая таблица, которую я создал с помощью awk!

1

Для тех, кто с Linux, используйте pandoc.

Установка:

sudo apt install pandoc texlive-latex-extra

Да, вам нужен пакет -extra из-за шрифтов.

Перерабатывать:

pandoc --from markdown -o output.pdf my-file.md
0

Я уточнил этот фрагмент для своих личных нужд:

# sudo apt install grip wkhtmltopdf

MD=${1:-README.md}
PDF=${2:-"$MD".pdf}
PORT=8971
DELAY=10

printf "Converting $MD to $PDF on port $PORT\n"
printf "Waiting $DELAY seconds for server to start...\n"

grip "$MD" localhost:$PORT &
sleep $DELAY
wkhtmltopdf http://localhost:$PORT "$PDF"
kill $(ps -eo pid,command | grep grip | grep -v grep | awk '{print $1}')

Сохранить как /usr/local/bin/md2pdf и sudo chmod +x /usr/local/bin/md2pdf впоследствии.

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

  • md2pdf преобразует README.md в README.md.pdf

  • md2pdf foo.md преобразует foo.md в foo.md.pdf

  • md2pdf foo.md bar.pdf преобразует foo.md в bar.pdf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .