Jak przekonwertować Markdown o smaku Github na plik PDF

147

Niedawno zacząłem uczyć się Markdown do użytku z dokumentacją i muszę wydrukować kilka moich stron Markdown. Chciałbym użyć narzędzia wiersza polecenia, terminala itp., Które pozwala mi przekonwertować Markdown o smaku Github na PDF. Musi mieć odpowiednie podświetlanie składni i nie powinien wyglądać okropnie. Dziękuję za wszelką pomoc.

dillmo
źródło
Kolorowanie składni w GitHub nie jest częścią GitHub Flavored Markdown. Przynajmniej o ile wiem.
Der Hochstapler,
@OliverSalzburg Github używa Linguist do podświetlania składni.
DanteTheEgregore,
@dillmo, najpierw przekonwertuj na HTML , a następnie użyj Chrome, aby wydrukować na pdf.
Pacerier

Odpowiedzi:

149

Odniosłem sukces, używając uchwytu do wyświetlania znaczników w przeglądarce Chrome, a następnie skorzystałem z opcji Chrome „Zapisz jako PDF” w oknie dialogowym Drukuj.

pip install grip  
grip your_markdown.md

grip wyświetli przecenę na localhost: 5000 - po prostu edytuj i odśwież przeglądarkę. Drukuj, gdy będzie gotowy.

Dało to bardziej niezawodną reprezentację niż pandoc i było lżejsze niż instalacja lateksu (wymagana przez pandoc do generowania pdf).

Wydruk nie jest wierszem polecenia w tej odpowiedzi, ale nadal jest łatwiejszy / bardziej niezawodny (wyglądał w 100% jak Github w przypadku długiego dokumentu zawierającego względnie połączone obrazy i wyróżnianie kodu).

Josh Werts
źródło
2
to jest dość łatwe.
s2t2
15
grip your_markdown.md --export your_markdown.htmljest przydatna opcja tutaj. Eksportuje go do pliku HTML, który można następnie wydrukować z wiersza poleceń, używając czegoś takiego jak wkhtmltopdf.
Luke Exton,
1
Niestety uchwyt potrzebuje dostępu do GitHub. Nie działa offline
teraz
6
Alternatywnie możesz pobrać (za darmo!) Atom ( atom.io ), otworzyć plik w Atom, użyć Control + Shift + M, aby wyświetlić go w podglądzie, zapisać jako HTML, a następnie otworzyć HTML w przeglądarce Chrome i zapisać jako PDF.
Andrew Carter
6
To pochodzi z ramą podobną do Github. Czy istnieje sposób na wydrukowanie do formatu PDF, usunięcie ramek / paska tytułu (tj. Wydrukowanie wszystkiego wewnątrz ramki)?
Joost,
56

Możesz także użyć opartego na Node.js markdown-pdf

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
Quanlong
źródło
2
To jest niesamowite i naprawdę łatwe. Problem z linkiem pochodzi z css wydruku html5, który możesz po prostu skomentować lub zastąpić w swoim własnym arkuszu stylów.
Robert poszedł
Chciałbym dodać, że ma to gotową obsługę Unicode, co jest bardzo miłe.
Niek
Możesz również zainstalować github-markdown-css, jeśli chcesz użyć pliku CSS GitHub.
jpmc26,
@ jpmc26 jak możesz z niego korzystać, nie znam javascript ani npm?
Abhishek Bhatia
1
@AbhishekBhatia Jest to pierwszy wynik, kiedy przejrzałem „Wprowadzenie do npm” w Google: smalljs.org/package-managers/npm . To tylko plik zakopany w module node_modules po jego zainstalowaniu.
jpmc26,
39

Spójrz na pandoc . Ma podświetlanie składni. Może to wymagać wprowadzenia (drobnych) zmian w dokumencie, ponieważ ma on swój własny styl markdown i nie wiem, jak ściśle pasuje do smaku GitHub.

Magnus
źródło
3
Dzięki. Uruchomienie pandoc -hzwróciło obsługę GitHub Flavored Markdown, więc zaznaczam to pytanie jako rozwiązane.
dillmo
2
Próbowałem zainstalować pandocna Fedorze Linux i wpadłem w koszmar zależności - głównie związany z LaTex. Radzę pominąć pandoc i wypróbować najpierw inne opcje
IanB,
Dla tych, którzy używają liter spoza ASCII i ich brakuje: dodaj opcje czcionek pandoc, takie jak:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47,
4
Jeśli ktoś szuka tylko poleceń: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(na Ubuntu, prawdopodobnie nie wszystkie są konieczne), topandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg
@TorKlingberg Dzięki, myślę, że to najlepsza odpowiedź!
thc
12

Jeśli plik przeceny był przechowywany w repozytorium github, gitprint jest interesującą opcją do utworzenia pdf / print.

Wszystko, co musisz zrobić, to wymienić github.comby gitprint.comw adresie URL. Oto przykład ze strony głównej gitprint.

Niestety, nie działa on na listach Markdown i działa tylko z plikami Markdown w repozytorium.

rpattabi
źródło
4
To również nie działa z obrazami. :(
Adam Arold
... i jest źle sformatowany :(
Moebius
Ciekawa opcja. Plusy: zewnętrzne linki są utrzymywane i dostępne z wyjścia. Minusy: wyjście jest czarno-białe, linki kotwiące są usuwane, linki zewnętrzne nie są wizualnie wskazane, ponieważ są czarno-białe.
rodey
7

Dostępny jest internetowy konwerter dostępny pod adresem http://www.markdowntopdf.com.
Zapewnia to podświetlanie składni po wyjęciu z pudełka i jest najprostszym rozwiązaniem, jakie do tej pory widziałem. Prawidłowo obsługuje także inne funkcje charakterystyczne dla GFM, np. Tabele.

kevgathuku
źródło
4
Nie obsługuje obrazów w osobnych plikach.
Larry K
działa pięknie
shadi
6

Jak stwierdziłem w moim komentarzu, Github używa Linguist do podświetlania składni. W Github możesz użyć tego do określenia podświetlania składni w następujący sposób:

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

Niestety nie ma dobrego sposobu na konwersję Markdown bezpośrednio do pliku PDF z podświetlaniem składni.

Alternatywy:

Vim :

Jeśli masz vima, możesz łatwo osiągnąć wyróżnianie składni, uruchamiając następujące polecenie z terminala:

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

Lub w vimie:

:hardcopy >/path/to/file.ps

Spowoduje to utworzenie pliku PostScript, który można przekonwertować na format pdf, na przykład ps2pdf:

ps2pdf /path/to/file.ps

Podświetlenie źródła :

Jeśli zamiast tego chcesz przejść drogą HTML lub LaTeX, możesz zamiast tego spróbować Source-highlight . Listę wszystkich języków obsługiwanych przez podświetlanie źródła można znaleźć tutaj .

Kilka przykładowych poleceń podświetlania źródła obejmuje:

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

Korzystanie z tego pliku wejściowego

Każdy z nich wyprowadza własny plik HTML:

Hello1.html
Hello2.html
Hello3.html

Dalsze przykłady użycia podświetlenia źródła można znaleźć tutaj

Windows :

Vim , ps2pdf (dostarczone przez Ghostscript ) i Source-highlight są dostępne za pośrednictwem Cygwin .

DanteTheEgregore
źródło
4

W przypadku Linuksa użyj pandoc .

Zainstalować:

sudo apt install pandoc texlive-latex-extra

Tak, potrzebujesz -extrapaczki z powodu czcionek.

Konwertować:

pandoc --from markdown -o output.pdf my-file.md
Andrejs Cainikovs
źródło
Nie zawiera żadnych zdjęć, linków i ignorowane rzeczy jak <font color="red">choć
derHugo
3

Niedawno utworzyłem usługę do konwersji dokumentów przecenionych do formatu PDF. Obsługuje markdown o smaku Github, a także podświetlanie składni. Usługa znajduje się na stronie: http://markdown2pdf.com

Saurabh Garg
źródło
nie działa z plikiem zip: nie można znaleźć pliku przeceny w archiwum, gdy taki istnieje.
Moebius
dostał „błąd w konwersji do pdf”. Korzystanie z markdowntopdf.com zamiast z kevgathuku
shadi
1

Moje rozwiązanie: przekonwertuj markdown pandocna html (nie zapomnij użyć css dla pandoc, aby wyświetlić obramowania tabeli) , a następnie otwórz go za pomocą libreoffice, wybierz opcję export as pdf.

Uwaga : żadne z wymienionych tutaj i w Internecie rozwiązań nie działało dla mnie: 1) rozwiązania przeglądarkowe (tj. Grip) dodają nadmiar informacji, takich jak numery stron, których nie udało mi się usunąć, 2) konwersja pandoc do pdf jest zepsuty, dla mnie generuje pustą tabelę (być może z powodu Unicode, i tak, skonfigurowałem ją do używania xetex) , 3) rozwiązania oparte na witrynie (np. gitprint.com) również dodają zbędne elementy, takie jak marginesy podobne do github, podczas gdy Potrzebuję tylko prostej tabeli wygenerowanej przez awk!

Cześć aniele
źródło
1
pandocpowinien działać dla Ciebie z opcjami takimi jak--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47,
@ gluk47 spoko, to działa!
Hi-Angel,
Mogę polecić tę stronę do konwersji markdown na PDF (lub do drukowania) markdownprint.com .
Johan O
@JohanO markdownprint.com wydaje się być
załamany
1

Wypróbowałem kilka wtyczek chrome i konwerterów online.
MDtr2PDF jest najlepszy. Obsługuje markdown o smaku Github i Unicode.

doclin
źródło
1
Czy obsługuje obrazy zapisane w innych plikach?
Larry K
Wygląda na to, że nie działa i nie jest zabezpieczony TLS.
David Oliver
1

Udoskonaliłem ten fragment dla moich osobistych potrzeb:

# 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}')

Zapisz jako /usr/local/bin/md2pdfi sudo chmod +x /usr/local/bin/md2pdfpóźniej.

Stosowanie:

  • md2pdf konwertuje README.md na README.md.pdf

  • md2pdf foo.md konwertuje foo.md na foo.md.pdf

  • md2pdf foo.md bar.pdf konwertuje foo.md na bar.pdf

fredoverflow
źródło