Як я можу перетворити відмітку з ароматом Github у PDF


147

Нещодавно я почав вивчати Markdown для використання з документацією, і мені потрібно роздрукувати кілька моїх сторінок Markdown. Я хотів би скористатися утилітою командного рядка, терміналу тощо, яка дозволяє мені конвертувати Markdown із ароматом Github у PDF. Він повинен мати належне виділення синтаксису і не повинен виглядати жахливо. Дякуємо за будь-яку допомогу.


Забарвлення синтаксису на GitHub не є частиною GitHub Flavored Markdown. Принаймні, наскільки я знаю.
Der Hochstapler

@OliverSalzburg Github використовує лінгвіст для виділення синтаксису.
DanteTheEgregore

@dillmo, спочатку перетворіть у HTML , а потім використовуйте Chrome для друку до pdf.
Pacerier

Відповіді:


149

У мене було успіхом використання grip для відображення розмітки в Chrome, а потім використання параметра Chrome "Зберегти як PDF" у діалоговому вікні "Друк".

pip install grip  
grip your_markdown.md

grip виведе розмітку на localhost: 5000 - просто відредагуйте та оновіть браузер. Роздрукуйте, коли буде готово.

Це дало більш надійне уявлення, ніж pandoc, і було легше, ніж установка латексу (необхідне pandoc для генерації pdf).

Друк не є командним рядком у цій відповіді, але все ж вважав це простішим / надійнішим (виглядав на 100% як Github для довгого документа, включаючи відносно пов’язані зображення та виділення коду).


2
це досить просто.
s2t2

15
grip your_markdown.md --export your_markdown.htmlтут корисний варіант. Експортує його у файл html, який потім можна буде надрукувати з командного рядка, використовуючи щось на зразок wkhtmltopdf.
Люк Екстон

1
На жаль, grip потребує доступу до GitHub. Це не працює в режимі офлайн
nowox

6
Крім того, ви можете завантажити (безкоштовно!) Atom ( atom.io ), відкрити свій файл в Atom, використовувати управління + shift + M, щоб переглянути його в попередньому перегляді, зберегти як HTML, а потім відкрити html у своєму браузері Chrome і зберегти як pdf.
Ендрю Картер

6
Це дійсно має рамку, схожу на Github. Чи є спосіб друку в PDF, видаляючи рамки / заголовки (тобто друкуючи все, що знаходиться всередині кадру)?
Joost

56

Ви також можете використовувати позначку-pdf на базі Node.js

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

2
Це досить приголомшливо і дуже просто. Проблема посилання виходить з css-файлу друку коробки html5, який ви можете просто прокоментувати або змінити у своєму власному аркуші стилів.
Роберт Пішов

Хотілося б додати, що це нестандартна підтримка Unicode, що дуже приємно.
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, тому я відзначаю це питання як вирішене.
dillmo

2
Я спробував встановити pandocна Fedora Linux і наткнувся на кошмар залежності - головним чином, пов'язаний з LaTex. Моя порада полягатиме в тому, щоб пропустити пандок і спробувати спершу інші варіанти
IanB

Для тих, хто використовує літери, що не належать до ASCII, і pandoc--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
пропустіть

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.

На жаль, він не працює на нотах розмітки, і працює лише з файлами розмітки в сховищі.


4
Не працює і з зображеннями. :(
Адам Арольд

... і погано сформований :(
Moebius

Цікавий варіант. Плюси: зовнішні посилання підтримуються та доступні з результату. Мінуси: вихідний сигнал чорно-білий, прив'язні канали видаляються, зовнішні посилання візуально не вказуються, оскільки вони є б / у.
rodey

7

На веб-сайті http://www.markdowntopdf.com доступний онлайн-конвертер.
Це забезпечує виділення синтаксису поза коробкою і є найпростішим рішенням, яке я бачив досі. Він також правильно обробляє інші функції, характерні для GFM, наприклад таблиці.


4
Не обробляє зображення в окремих файлах.
Ларрі К

працює прекрасно
shadi

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-виділити натомість. Список усіх мов, що підтримуються джерелом, можна знайти тут .

Кілька прикладів команд для виділення джерела включають:

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

Подальші приклади використання підсвічування джерела можна знайти тут

Windows :

Vim , ps2pdf (надається Ghostscript ) та Source-виділення доступні через Cygwin .


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-файлом: не вдалося знайти файл розмітки в архіві, поки він є.
Moebius

отримано "помилка при перетворенні в pdf". Використання markdowntopdf.com замість від kevgathuku
Шаді

1

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

Примітка : жодне з згаданих тут і в Інтернеті не працювало на мене: 1) рішення на базі браузера (тобто зчеплення) додають зайву інформацію, наприклад номери сторінок, які мені не вдалося видалити; 2) конвертація pandoc у pdf є зламано, для мене він створює порожню таблицю (можливо, через unicode, і так, я налаштував її на використання 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

Я спробував кілька хромованих плагінів та онлайн-перетворювачів.
MDtr2PDF - найкращий. Він підтримує Github-ароматизовану розмітку та unicode.


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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.