Как я могу конвертировать Github-приправленную уценку в PDF

147

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

dillmo
источник
Окрашивание синтаксиса на GitHub не является частью GitHub Flavored Markdown. По крайней мере, насколько я знаю.
Der Hochstapler
@OliverSalzburg Github использует Linguist для подсветки синтаксиса.
DanteTheEgregore
@dillmo, сначала конвертируйте в HTML , затем используйте Chrome для печати в PDF.
Pacerier

Ответы:

150

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

pip install grip  
grip your_markdown.md

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

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

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

Джош Вертс
источник
2
это достаточно просто.
s2t2
16
grip your_markdown.md --export your_markdown.htmlполезный вариант здесь. Экспортирует его в html-файл, который затем можно распечатать из командной строки, используя что-то вроде wkhtmltopdf.
Люк Экстон
1
К сожалению, grip необходим доступ к GitHub. Это не работает в автономном режиме
nowox
6
Кроме того, вы можете скачать (бесплатно!) Atom ( atom.io ), открыть свой файл в Atom, использовать control + shift + M, чтобы просмотреть его в режиме предварительного просмотра, сохранить как html, затем открыть html в браузере Chrome и сохранить как pdf.
Эндрю Картер
6
Это идет с Github-подобной структурой вокруг этого. Есть ли способ печатать в PDF, удаляя границы / строку заголовка (т.е. печатать все внутри рамки)?
Joost
56

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

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
Quanlong
источник
2
Это довольно круто и действительно просто. Проблема со связью возникает из шаблона печати html5, который вы можете просто закомментировать или переопределить в своей собственной таблице стилей.
Роберт пошел
Хотелось бы добавить, что это имеет встроенную поддержку Юникода, что очень приятно.
Niek
Вы также можете установить github-markdown-css, если хотите использовать CSS-файл GitHub.
jpmc26
@ jpmc26 как ты можешь это использовать, я не знаю javascript или npm?
Абхишек Бхатия,
1
@AbhishekBhatia Это первый результат, когда я ввел в Google «введение в npm»: smalljs.org/package-managers/npm . Это просто файл, похороненный в node_modules после его установки.
jpmc26
39

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

Магнус
источник
3
Благодарю. Запуск pandoc -hвернул поддержку GitHub Flavored Markdown, поэтому я отмечаю этот вопрос как решенный.
Дилмо
2
Я попытался установить pandocна Fedora Linux и столкнулся с кошмаром зависимости - главным образом, связанным с LaTex. Мой совет - сначала пропустить pandoc и попробовать другие варианты
IanB
Для тех, кто использует не-ASCII буквы и пропускает их: добавьте параметры шрифта pandoc, например:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
4
Если кто-то ищет только команды: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(в Ubuntu, вероятно, не все необходимые), тоpandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg
@TorKlingberg Спасибо, я думаю, что это лучший ответ!
THC
12

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

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

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

rpattabi
источник
4
Он также не работает с изображениями. :(
Адам Арольд
... и плохо отформатирован :(
Мебиус
Интересный вариант. Плюсы: внешние ссылки поддерживаются и доступны из вывода. Минусы: вывод черно-белый, ссылки привязки удалены, внешние ссылки визуально не обозначены, потому что они черно-белые.
Родей
7

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

kevgathuku
источник
4
Не обрабатывает изображения в отдельных файлах.
Ларри К
работает прекрасно
Шади
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 .

DanteTheEgregore
источник
4

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

Установка:

sudo apt install pandoc texlive-latex-extra

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

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

pandoc --from markdown -o output.pdf my-file.md
Андрейс Кайников
источник
Не было никаких изображений, ссылок и игнорируемых вещей, таких как, <font color="red">хотя
derHugo
3

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

Саураб Гарг
источник
не работает с zip-файлом: не удалось найти файл уценки в архиве, пока он есть.
Мобиус
получил "ошибка в преобразовании в PDF". Использование markdowntopdf.com вместо kevgathuku
Шади
1

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

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

Привет, ангел
источник
1
pandocдолжен работать для вас с такими опциями, как--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
@ gluk47 круто, это работает!
Привет, Ангел,
Я могу порекомендовать эту страницу для преобразования уценки в PDF (или для печати) markdownprint.com .
Йохан О
@JohanO markdownprint.com , кажется, вниз
derHugo
1

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

doclin
источник
1
Поддерживает ли он изображения, хранящиеся в других файлах?
Ларри К
Кажется, больше не работает и не защищен TLS.
Дэвид Оливер
1

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

# 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

fredoverflow
источник