Wie kann ich Github-Flavored Markdown in ein PDF konvertieren?

147

Ich habe kürzlich angefangen, Markdown für die Verwendung mit Dokumentationen zu lernen und muss einige meiner Markdown-Seiten ausdrucken. Ich möchte eine Befehlszeile, ein Terminal usw.-Dienstprogramm verwenden, mit dem ich Markdown mit Github-Geschmack in PDF konvertieren kann. Es muss die richtige Syntax hervorheben und sollte nicht schrecklich aussehen. Danke für jede Hilfe.

dillmo
quelle
Die Syntaxfärbung in GitHub ist nicht Bestandteil von GitHub Flavored Markdown. Zumindest soweit ich weiß.
Der Hochstapler
@OliverSalzburg Github verwendet Linguist , um die Syntax hervorzuheben.
DanteTheEgregore
@dillmo, Zuerst in HTML konvertieren und dann mit Chrome als PDF drucken.
Pacerier

Antworten:

150

Ich hatte Erfolg mit Grip , um Markdowns in Chrome anzuzeigen und dann die Option "Als PDF speichern" in Chrome im Dialogfeld "Drucken" zu verwenden.

pip install grip  
grip your_markdown.md

grip rendert den Markdown für localhost: 5000 - einfach bearbeiten und den Browser aktualisieren. Drucken Sie, wenn Sie fertig sind.

Dies ergab eine zuverlässigere Darstellung als pandoc und war leichter als die Installation von Latex (für die PDF-Generierung von pandoc erforderlich).

Der Ausdruck ist in dieser Antwort nicht über die Befehlszeile möglich, hat sich jedoch als einfacher / zuverlässiger erwiesen (sah bei einem langen Dokument mit relativ verknüpften Bildern und Hervorhebungen von Code zu 100% wie Github aus).

Josh Werts
quelle
2
das ist einfach genug.
S2T2
16
grip your_markdown.md --export your_markdown.htmlist hier eine nützliche Option. Exportiert es in die HTML-Datei, die dann über die Befehlszeile mit so etwas wie wkhtmltopdf gedruckt werden kann.
Luke Exton
1
Leider braucht Grip den Zugang zu GitHub. Es funktioniert nicht offline
nowox
6
Alternativ können Sie Atom ( atom.io ) herunterladen (kostenlos!) , Ihre Datei in Atom öffnen, mit STRG + UMSCHALT + M in der Vorschau anzeigen, als HTML speichern und dann die HTML in Ihrem Chrome-Browser öffnen und als PDF speichern.
Andrew Carter
6
Dies kommt mit dem Github-ähnlichen Rahmen. Gibt es eine Möglichkeit, in PDF zu drucken, indem der Rahmen / die Titelleiste entfernt wird (dh alles innerhalb des Rahmens gedruckt wird)?
Joost
56

Sie können auch Node.js basiertes markdown-pdf verwenden

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
Quanlong
quelle
2
Das ist ziemlich genial und sehr einfach. Das Link-Problem stammt aus dem Druck-CSS der HTML5-Boilerplate, das Sie einfach in Ihrem eigenen Stylesheet auskommentieren oder überschreiben können.
Robert ging
Ich möchte hinzufügen, dass dies eine sofort einsatzbereite Unicode-Unterstützung bietet, was sehr nett ist.
Niek,
Sie können auch github-markdown-css installieren , um die CSS-Datei von GitHub zu verwenden.
jpmc26
@ jpmc26 wie kannst du es benutzen, ich kenne kein Javascript oder npm?
Abhishek Bhatia
1
@AbhishekBhatia Dies ist das erste Ergebnis, als ich "Npm Introduction" googelte : smalljs.org/package-managers/npm . Es ist nur eine Datei, die nach der Installation in node_modules vergraben ist.
jpmc26
39

Werfen Sie einen Blick auf Pandoc . Es hat Syntaxhervorhebung. Möglicherweise müssen Sie (geringfügige) Änderungen an Ihrem Dokument vornehmen, da es eine eigene Abschrift aufweist und ich nicht weiß, wie genau es mit der GitHub-Variante übereinstimmt.

Magnus
quelle
3
Vielen Dank. Das Ausführen pandoc -hhat die Unterstützung für GitHub Flavored Markdown zurückgegeben, daher markiere ich diese Frage als gelöst.
Dillmo
2
Ich habe versucht, pandocauf Fedora Linux zu installieren, und bin auf einen Abhängigkeits-Albtraum gestoßen, der hauptsächlich mit LaTex zusammenhängt. Mein Rat wäre, Pandoc zu überspringen und zuerst andere Optionen auszuprobieren
IanB
Für diejenigen, die Nicht-ASCII-Buchstaben verwenden und diese vermissen: pandoc--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
Fügen Sie die folgenden Schriftoptionen hinzu
4
Wenn jemand nur nach den Befehlen sucht: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(auf Ubuntu wahrscheinlich nicht alle notwendig), dannpandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg
@ TorKlingberg Danke, ich denke das ist die beste Antwort!
2.
12

Wenn die Markdown-Datei im Github-Repository gehostet wurde, ist GITPRINT eine interessante Option zum Erstellen von PDF / Print.

Alles, was Sie tun müssen, ist in der URL github.comdurch zu ersetzen gitprint.com. Hier ist ein Beispiel von der Homepage von gitprint.

Leider funktioniert es nicht mit Markdown-Listen und nur mit Markdown-Dateien im Repository.

rpattabi
quelle
4
Es funktioniert auch nicht mit Bildern. :(
Adam Arold
... und ist schlecht formatiert :(
Moebius
Interessante Option. Vorteile: Externe Links werden beibehalten und sind über die Ausgabe zugänglich. Nachteile: Die Ausgabe erfolgt in Schwarzweiß, Ankerverknüpfungen werden entfernt, externe Verknüpfungen werden nicht visuell angezeigt, da sie s / w sind.
Rodey
7

Unter http://www.markdowntopdf.com steht ein Online-Konverter zur Verfügung.
Dieser bietet eine sofort einsatzbereite Hervorhebung der Syntax und ist die einfachste Lösung, die ich bisher gesehen habe. Andere GFM-spezifische Funktionen, z. B. Tabellen, werden ebenfalls korrekt verarbeitet.

Kevgathuku
quelle
4
Behandelt keine Bilder in separaten Dateien.
Larry K
funktioniert wunderbar
shadi
6

Wie ich in meinem Kommentar ausgeführt habe, verwendet Github Linguist , um die Syntax hervorzuheben. Auf Github können Sie dies verwenden, um die Syntaxhervorhebung wie folgt festzulegen:

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

Leider gibt es keine gute Möglichkeit, Markdown direkt in eine PDF-Datei mit Syntaxhervorhebung zu konvertieren.

Alternativen:

Vim :

Wenn Sie vim haben, können Sie die Syntaxhervorhebung auf einfache Weise erreichen, indem Sie Folgendes von einem Terminal aus ausführen:

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

Oder innerhalb von vim:

:hardcopy >/path/to/file.ps

Dadurch wird eine PostScript-Datei erstellt, die beispielsweise mit ps2pdf in PDF konvertiert werden kann:

ps2pdf /path/to/file.ps

Quell-Highlight :

Wenn Sie stattdessen HTML oder LaTeX verwenden möchten, können Sie stattdessen Source-highlight verwenden. Eine Liste aller von Source-highlight unterstützten Sprachen finden Sie hier .

Einige Beispiele für Source-Highlight-Befehle sind:

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

Verwendung dieser Eingabedatei

Und jeder gibt seine eigene HTML-Datei aus:

Hallo1.html
Hallo2.html
Hallo3.html

Weitere Beispiele für die Verwendung von Source-Highlights finden Sie hier

Windows :

Vim , ps2pdf (bereitgestellt von Ghostscript ) und Source-Highlight sind alle über Cygwin verfügbar .

DanteTheEgregore
quelle
4

Verwenden Sie für Linux- Benutzer pandoc .

Installieren:

sudo apt install pandoc texlive-latex-extra

Ja, Sie benötigen ein -extraPaket wegen der Schriftarten.

Konvertieren:

pandoc --from markdown -o output.pdf my-file.md
Andrejs Cainikovs
quelle
Hat keine Bilder, Links und ignorierte Dinge wie <font color="red">obwohl
derHugo
3

Ich habe kürzlich einen Dienst zum Konvertieren von Markdown-Dokumenten in PDF erstellt. Es unterstützt Github-Markdown sowie Syntaxhervorhebung. Der Service befindet sich unter: http://markdown2pdf.com

Saurabh Garg
quelle
Funktioniert nicht mit ZIP-Datei: Die Markdown-Datei konnte nicht im Archiv gefunden werden, solange es eine gibt.
Möbius
habe "Fehler bei der Konvertierung nach pdf". Mit markdowntopdf.com anstelle von kevgathuku
Shadi
1

Meine Lösung: Konvertieren Sie Markdown mit pandocin HTML (vergessen Sie nicht, CSS für Pandoc zu verwenden, um Tabellenränder anzuzeigen ) , öffnen Sie es dann mit libreofficeund wählen Sie eine Option aus export as pdf.

NB : Keine der hier und im Internet erwähnten Lösungen hat für mich funktioniert: 1) Browser-basierte Lösungen (dh Grip) fügen überschüssige Informationen hinzu, wie Seitenzahlen, die ich nicht entfernen konnte, 2) Pandoc-Konvertierung in PDF ist für mich gebrochen, erzeugt er eine leere Tabelle (vielleicht wegen der Unicode, und ja, ich konfigurierte es xetex verwenden) , 3) Website - basierten Lösungen (dh gitprint.com) sind auch das Hinzufügen redundante Dinge, wie github artige Margen, während Ich brauche nur eine einfache Tabelle, die ich mit awk erstellt habe!

Hallo Engel
quelle
1
pandocsollte für Sie arbeiten mit Optionen wie--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
@ gluk47 cool, das funktioniert!
Hi-Angel
Ich kann diese Seite zum Konvertieren von Markdown in PDF (oder zum Drucken) von markdownprint.com empfehlen .
Johan O
@JohanO markdownprint.com scheint nach unten zu sein
derHugo
1

Ich habe verschiedene Chrome-Plugins und Online-Konverter ausprobiert.
MDtr2PDF ist das beste. Es unterstützt Github-Markdown und Unicode.

doclin
quelle
1
Unterstützt es Bilder, die in anderen Dateien gespeichert sind?
Larry K
Scheint nicht mehr zu funktionieren und ist nicht TLS-gesichert.
David Oliver
1

Ich habe dieses Snippet für meine persönlichen Bedürfnisse verfeinert :

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

Speichern Sie als /usr/local/bin/md2pdfund sudo chmod +x /usr/local/bin/md2pdfdanach.

Verwendungszweck:

  • md2pdf konvertiert README.md in README.md.pdf

  • md2pdf foo.md konvertiert foo.md in foo.md.pdf

  • md2pdf foo.md bar.pdf wandelt foo.md in bar.pdf um

fredoverflow
quelle