Wie kann ich Markdown mit Github-Geschmack in ein PDF konvertieren

Ich habe kürzlich begonnen, Markdown für die Verwendung mit Dokumentation zu lernen, und muss einige meiner Markdown-Seiten ausdrucken. Ich möchte eine Befehlszeile, ein Terminal usw. verwenden. dienstprogramm, mit dem ich Markdown mit Github-Geschmack in PDF konvertieren kann. Es muss eine korrekte Syntaxhervorhebung haben und sollte nicht schrecklich aussehen. Danke für jede Hilfe.

 191
Author: dillmo, 2013-12-16

14 answers

Ich hatte Erfolg mit und, um Markdown in Chrome anzuzeigen, und verwende dann die Option "Als PDF speichern" von Chrome im Druckdialog.

pip install grip  
grip your_markdown.md

grip rendert den Markdown auf localhost:5000 oder ähnlichem (ex: gehe zu http://localhost:5000/) - bearbeiten Sie einfach weg und aktualisieren Sie den Browser. Drucken, wenn fertig.

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

Der Druck ist nicht befehlszeile in dieser Antwort, fand dies aber immer noch einfacher/zuverlässiger (sah zu 100% aus wie Github für ein langes Dokument mit relativ verknüpften Bildern und Code-Hervorhebung).

 189
Author: Josh Werts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-10-08 15:27:30

Sie können auch Node.js basierte " markdown-pdf -

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
 66
Author: Quanlong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-04-16 01:52:57

Schauen Sie sich pandoc an. Es hat Syntaxhervorhebung. Möglicherweise müssen Sie (geringfügige) Änderungen an Ihrem Dokument vornehmen, da es einen eigenen Markdown-Geschmack hat und ich nicht weiß, wie genau es dem GitHub-Geschmack entspricht.

 50
Author: Magnus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-06-11 20:53:04

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

Sie müssen nur github.com durch gitprint.com in der URL ersetzen. Hier ist ein Beispiel von gitprint ' s Homepage.

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

 13
Author: rpattabi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-08-08 02:44:02

Ein Online-Konverter ist verfügbar unter http://www.markdowntopdf.com
Dies bietet Syntaxhervorhebung aus der Box und ist die einfachste Lösung, die ich bisher gesehen habe. Es behandelt auch andere Funktionen, die für GFM spezifisch sind, z. B. Tabellen.

 10
Author: kevgathuku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-07-10 08:44:36

Für diejenigen mit Linux, verwenden Sie pandoc.

Installieren:

sudo apt install pandoc texlive-latex-extra

Ja, Sie benötigen -extra Paket wegen Schriftarten.

Konvertieren:

pandoc --from markdown -o output.pdf my-file.md
 10
Author: Andrejs Cainikovs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-08-22 14:39:58

Wie ich in meinem Kommentar angegeben habe, verwendet Github Linguist, um Syntaxhervorhebung bereitzustellen. Auf Github können Sie dies verwenden, um die Syntaxhervorhebung wie folgt anzugeben:

```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 über vim verfügen, können Sie die Syntaxhervorhebung problemlos 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 erzeugt, die beispielsweise mit ps2pdf in PDF konvertiert werden kann:

ps2pdf /path/to/file.ps

Quelle-Highlight:

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

Einige Beispiele für Quellenhighlight-Befehle umfassen:

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

Mit diese Eingabedatei

, Und jede Ausgabe ihre eigene jeweilige HTML-Datei:

Hello1.html
Hello2.html
Hello3.html -

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

Windows:

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

 6
Author: DanteTheEgregore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-12 13:48:39

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

 3
Author: Saurabh Garg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-08-27 04:47:35

Meine Lösung: Konvertieren Sie Markdown mit pandoc in HTML (vergessen Sie nicht , um CSS für pandoc zum Anzeigen von Tabellenrändern zu verwenden), dann öffnen Sie es mit libreoffice, wählen Sie eine Option export as pdf.

NB: Keine der hier und im Internet genannten Lösungen hat für mich funktioniert: 1) browserbasierte Lösungen (dh 3) fügen überschüssige Informationen hinzu, wie Seitenzahlen, die ich nicht entfernen konnte, 2) Pandoc-Konvergenz zu PDF ist kaputt, für mich erzeugt es eine leere Tabelle (vielleicht gibt es aufgrund von Unicode und ja, ich habe es so konfiguriert, dass xetex), 3) Site-basierte Lösungen (dh gitprint.com) fügen auch redundante Dinge hinzu, wie Github-ähnliche Ränder, während ich nur eine einfache Tabelle brauche, die ich mit awk generiert habe!

 1
Author: Hi-Angel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-05-23 12:41:42

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

 1
Author: doclin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-10-07 10:49:27

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 als /usr/local/bin/md2pdf und sudo chmod +x /usr/local/bin/md2pdf danach.

Verwendung:

  • md2pdf konvertiert README.md zu README. md. pdf

  • md2pdf foo.md konvertiert foo.md zu foo. md. pdf

  • md2pdf foo.md bar.pdf konvertiert foo.md zur Bar.pdf -

 1
Author: fredoverflow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-15 17:41:27

Ich hatte das meiste Glück mit VSCode und der Erweiterung Markdown PDF. Die Online-Konverter haben die Codierung für meine Dateien vermasselt oder Wasserzeichen in die Kopfzeile eingefügt.

Verwendung:

  1. Installieren Sie die Erweiterung
  2. Öffnen Sie Ihre MD-Datei mit VSCode und stellen Sie sicher, dass die Markdown-Hervorhebung aktiviert ist
  3. Öffnen Sie die Befehlspalette (F1), geben Sie export ein und wählen Sie markdown-pdf: Export (pdf)

NB: Die Erweiterung installiert und verwendet eine lokale Version von Chromium in der Hintergrund.

Es gibt verschiedene Optionen zur Steuerung der Formatierung, die alle auf der oben verlinkten Website erläutert werden

 1
Author: Lennart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-01-17 07:08:10

Ich konvertiere stattdessen einfach aus HTML. Dies funktioniert für meine Bedürfnisse:

Https://github.com/dompdf/dompdf

Ich habe festgestellt, dass Markdown im Allgemeinen kein gutes Format zum Konvertieren in PDF ist, da es hat keine native CSS-Unterstützung. Hier ist das Skript, das ich benutze:

<?php
require 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;

$dompdf = new Dompdf();
$dompdf->getOptions()->setIsFontSubsettingEnabled(true);
$s_in = file_get_contents('index.html');
$dompdf->loadHtml($s_in);

$dompdf->render();
$s_out = $dompdf->output();
file_put_contents('index.pdf', $s_out);

Diese Lösung benötigt nur PHP (25 MB) und DomPdf (4 MB), also ziemlich leicht im Vergleich zu anderen Optionen.

 0
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-04-23 23:12:47

Ich bin immer noch auf der Suche nach einer Befehlszeilenlösung, die Ergebnisse dieser hochwertigen [Update: Ich habe einen pandoc Befehl entwickelt, der CSS zum Formatieren verwendet und ziemlich gut aussieht: pandoc -f gfm -t html5 --metadata pagetitle="test.md" --css github.css test.md -o test.pdf--sehen Sie jetzt meine andere Antwort hier!], aber:

Die Markdown Viewer Plugin in Chrome funktioniert wirklich gut, und sieht überraschend ähnlich wie GitHub Markdown! Öffnen Sie einfach Ihre Markdown-Datei in Chrome, wenn dieses Plugin installiert und aktiviert ist, und verwenden Sie dann die Menüs zum Drucken und speichern Sie als PDF direkt von Chrome.

Markdown Viewer verfügt über die folgenden Funktionen (Hervorhebung hinzugefügt):

✔ Rendert lokale und entfernte URLs
Die Polizei sucht Zeugen, die Angaben zum Unfallhergang machen können.]} ✔ Mehrere markdown-Parser
✔ Volle Kontrolle über die compiler-Optionen
✔ Themen (einschließlich GitHub theme)
GitHub Flavored Markdown (GFM)
Automatisches Neuladen bei Dateiänderung
Syntax hervorgehobene Codeblöcke
✔ Inhaltsverzeichnis (TOC)
MathJax und Emoji-Unterstützung
Merkt sich die Bildlaufposition
✔ Markdown-Content-Type-Erkennung
✔ URL-Erkennung mit RegExp
✔ Toggle Content Security Policy (CSP)
✔ Seitencodierung überschreiben
✔ Einstellungen Synchronisation
✔ Rohe und gerenderte Markdown-Ansichten
Kostenlos und Open Source

Beispiel Markdown-Datei

Hier ist eine Beispiel-Markdown-Datei, die ein Ausschnitt aus my example Markdown ist demo-Datei in meinem Projekt hier:

Test.md:

## 1.1. Align images left, right, or centered, with NO WORD WRAP:

This:

```html
**Align left:**
<p align="left" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align center:**
<p align="center" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align right:**
<p align="right" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>
```

Produces this:

**Align left:**
<p align="left" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align center:**
<p align="center" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

**Align right:**
<p align="right" width="100%">
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>

If you'd like to set the text itself to left, center, or right, you can include the text inside the `<p>` element as well, as regular HTML, like this:

```html
<p align="right" width="100%">
    This text is also aligned to the right.<br>
    <img width="33%" src="https://i.stack.imgur.com/RJj4x.png"> 
</p>
```

Markdown Viewer Ausgabe:

Die obige Markdown-Datei erzeugt diese Ausgabe direkt in meinem Chrome-Browser, wenn sie mit der Markdown-Viewer plugin installiert und auf. Beachten Sie, dass es sprachbewusste Syntaxhervorhebung für Codeblöcke hat, gut aussehender, grauer Code mit und vernünftigen Spaltenbreiten für Ausgabeinhalte.

Seine Ausgabe sieht aus wirklich nett und ist fast identisch mit GitHubs Markdown-Ausgabe!

geben Sie hier die Bildbeschreibung ein

Es unterstützt auch Themen. Siehe das Thema "GitHub" ist hier ausgewählt, zum Beispiel. Klicken Sie einfach auf die kleine m plugin-Symbol oben rechts in Ihrem Chrome-Browser, um die gewünschten Markdown Viewer-Einstellungen auszuwählen:

geben Sie hier die Bildbeschreibung ein


grip Ausgabe:

Kontrastieren Sie dies mit der Ausgabe von Grip, die meiner Meinung nach nicht aussieht fast so gut. grip hat keine Syntaxhervorhebung für Codeblöcke, keinen grauen Hintergrund für Code und keine vernünftigen Spaltenbreiten für den Ausgabeinhalt. Auf einem breiten Monitor nimmt es die gesamte Breite ein.

Unter Linux Ubuntu:

sudo apt update
sudo apt install grip
grip test.md

Dann Strg + Klick auf die URL, die es dir gibt, um die Ausgabe in deinem Browser zu öffnen. Ex: in http://localhost:6419/. Hier ist die grip - gerenderte Ausgabe, die ich in Chrome sehe:

geben Sie hier die Bildbeschreibung ein

Siehe auch:

  1. [meine antwort] Wie konvertiert man Markdown + CSS -> PDF?
 0
Author: Gabriel Staples,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-10-08 07:22:36