Come posso convertire markdown al gusto di Github in PDF


147

Di recente ho iniziato a studiare Markdown per l'uso con la documentazione e devo stampare alcune delle mie pagine Markdown. Vorrei utilizzare un'utilità da riga di comando, Terminale, ecc. Che mi consente di convertire Markdown in formato Github in PDF. Deve avere una corretta evidenziazione della sintassi e non dovrebbe apparire orribile. Grazie per qualsiasi aiuto.


La colorazione della sintassi su GitHub non fa parte del Markdown aromatizzato GitHub. Almeno per quanto ne so.
Der Hochstapler,

@OliverSalzburg Github utilizza Linguist per fornire l'evidenziazione della sintassi.
DanteTheEgregore,

@dillmo, converti prima in HTML , quindi usa Chrome per stampare in pdf.
Pacerier,

Risposte:


150

Ho avuto successo usando grip per visualizzare il markdown in Chrome e quindi usare l'opzione "Salva come PDF" di Chrome nella finestra di dialogo Stampa.

pip install grip  
grip your_markdown.md

grip renderà il markdown su localhost: 5000 - basta modificare e aggiornare il browser. Stampa quando pronto.

Ciò ha fornito una rappresentazione più affidabile di Pandoc ed è stato più leggero rispetto all'installazione di lattice (richiesto da PandC per la generazione di pdf).

La stampa non è una riga di comando in questa risposta, ma lo ha ancora trovato più facile / più affidabile (sembrava Github al 100% per un lungo documento che includeva immagini relativamente collegate e l'evidenziazione del codice).


2
questo è abbastanza facile.
s2t2,

16
grip your_markdown.md --export your_markdown.htmlè un'opzione utile qui. Lo esporta nel file html, che può quindi essere stampato dalla riga di comando usando qualcosa come wkhtmltopdf.
Luke Exton,

1
Purtroppo grip ha bisogno dell'accesso a GitHub. Non funziona offline
nowox

6
In alternativa puoi scaricare (gratis!) Atom ( atom.io ), aprire il tuo file in Atom, usare control + shift + M per visualizzarlo in anteprima, salvare come HTML, quindi aprire HTML nel browser Chrome e salvare come pdf.
Andrew Carter,

6
Questo viene fornito con la cornice simile a Github attorno ad esso. C'è un modo per stampare su PDF, rimuovendo i bordi / la barra del titolo (cioè stampando tutto all'interno della cornice)?
Joost

56

Puoi anche usare markdown -pdf basato su Node.js

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

2
Questo è davvero fantastico e molto semplice. Il problema del collegamento proviene dal css di stampa della caldaia html5 che puoi semplicemente commentare o sovrascrivere nel tuo foglio di stile.
Robert è andato l'

Vorrei aggiungere che questo ha un supporto Unicode pronto all'uso, il che è molto bello.
Niek,

Puoi anche installare github-markdown-css su se vuoi usare il file CSS di GitHub.
jpmc26

@ jpmc26 come puoi usarlo, non sono a conoscenza di javascript o npm?
Abhishek Bhatia,

1
@AbhishekBhatia Questo è il primo risultato quando ho cercato su Google "npm introduzione": smalljs.org/package-managers/npm . È solo un file sepolto in node_modules una volta installato.
jpmc26,

39

Dai un'occhiata a Pandoc . Ha l'evidenziazione della sintassi. Potrebbe essere necessario apportare modifiche (minori) al documento poiché ha il proprio sapore di markdown e non so quanto corrisponda al sapore di GitHub.


3
Grazie. Running pandoc -hha restituito il supporto per GitHub Flavored Markdown, quindi segnerò questa domanda come risolta.
Dillmo,

2
Ho tentato di installare pandocsu Fedora Linux e ho incontrato un incubo di dipendenze, principalmente relativo a LaTex. Il mio consiglio sarebbe di saltare il pandoc e provare prima altre opzioni
IanB

Per coloro che usano lettere non ASCII e le fanno perdere: aggiungi opzioni di carattere a pandoc, come queste:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

4
Se qualcuno sta cercando solo i comandi: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(su Ubuntu, probabilmente non tutti necessari), allorapandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg,

@TorKlingberg Grazie, penso che sia la risposta migliore!
THC

12

Se il file markdown è stato ospitato sul repository github, gitprint è un'interessante opzione per creare pdf / stampa.

Tutto quello che devi fare è sostituirlo github.comcon gitprint.comnell'URL. Ecco un esempio dalla homepage di gitprint.

Sfortunatamente, non funziona con i markdown e funziona solo con i file markdown nel repository.


4
Non funziona neanche con le immagini. :(
Adam Arold,

... ed è mal formulato :(
Moebius

Opzione interessante. Pro: i collegamenti esterni sono mantenuti e accessibili dall'output. Contro: l'output è in bianco e nero, i collegamenti di ancoraggio sono rimossi, i collegamenti esterni non sono indicati visivamente perché sono in b / n.
Rodey,

7

C'è un convertitore online disponibile su http://www.markdowntopdf.com
Questo fornisce l'evidenziazione della sintassi pronta all'uso ed è la soluzione più semplice che abbia mai visto finora. Gestisce inoltre correttamente altre funzionalità specifiche di GFM, ad esempio le tabelle.


4
Non gestisce le immagini in file separati.
Larry K,

funziona magnificamente
Shadi,

6

Come ho affermato nel mio commento, Github utilizza Linguist per fornire l'evidenziazione della sintassi. Su Github, puoi usarlo per specificare l'evidenziazione della sintassi in questo modo:

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

Sfortunatamente, non esiste un buon modo per convertire Markdown direttamente in un file PDF con l'evidenziazione della sintassi.

alternative:

Vim :

Se hai vim, puoi facilmente ottenere l'evidenziazione della sintassi eseguendo quanto segue da un terminale:

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

O all'interno di Vim:

:hardcopy >/path/to/file.ps

Questo produrrà un file PostScript che può essere convertito in pdf usando, ad esempio, ps2pdf:

ps2pdf /path/to/file.ps

Punto culminante della fonte :

Se invece preferisci seguire il percorso di HTML o LaTeX, puoi invece provare Source-highlight . Un elenco di tutte le lingue supportate da Source-highlight è disponibile qui .

Alcuni comandi di evidenziazione della sorgente di esempio includono:

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

Utilizzando questo file di input

E ognuno in uscita il proprio rispettivo file HTML:

Hello1.html
Hello2.html
Hello3.html

Ulteriori esempi di utilizzo dell'evidenziazione della fonte sono disponibili qui

Windows :

Vim , ps2pdf (fornito da Ghostscript ) e Source-highlight sono tutti disponibili tramite Cygwin .


4

Per quelli con Linux, usa pandoc .

Installare:

sudo apt install pandoc texlive-latex-extra

Sì, è necessario il -extrapacchetto a causa dei caratteri.

Convertire:

pandoc --from markdown -o output.pdf my-file.md

Non ha incluso immagini, collegamenti e cose ignorate come <font color="red">se
derHugo

3

Di recente ho creato un servizio per convertire i documenti di markdown in PDF. Supporta markdown al gusto di Github e evidenziazione della sintassi. Il servizio è disponibile all'indirizzo: http://markdown2pdf.com


non funziona con il file zip: impossibile trovare il file markdown nell'archivio mentre ce n'è uno.
Moebius,

ottenuto "errore nella conversione in pdf". Utilizzando markdowntopdf.com invece da kevgathuku
Shadi

1

La mia soluzione: converti markdown con pandocin html (non dimenticare di usare css per pandoc per mostrare i bordi della tabella) , quindi aprilo con libreoffice, scegli un'opzione export as pdf.

NB : nessuna delle soluzioni menzionate qui e su Internet ha funzionato per me: 1) le soluzioni basate su browser (ovvero grip) aggiungono informazioni in eccesso, come i numeri di pagina, che non sono riuscito a rimuovere, 2) la conversione pandoc in pdf è rotto, per me genera una tabella vuota (forse a causa dell'unicode, e sì, l'ho configurato per l'uso di xetex) , 3) soluzioni basate sul sito (ad esempio gitprint.com) stanno anche aggiungendo cose ridondanti, come i margini simili a github, mentre Ho bisogno solo di una semplice tabella che ho generato con awk!


1
pandocdovrebbe funzionare per te con opzioni come--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47

@ gluk47 cool, funziona!
Hi-Angel,

Posso raccomandare questa pagina per convertire markdownprint in PDF (o per la stampa) markdownprint.com .
Johan O,

@JohanO markdownprint.com sembra essere giù
derHugo

1

Ho provato diversi plugin di Chrome e convertitori online.
MDtr2PDF è il migliore. Supporta markdown e unicode al gusto di Github.


1
Supporta immagini archiviate in altri file?
Larry K,

Sembra non funzionare più e non è protetto da TLS.
David Oliver,

1

Ho perfezionato questo frammento per le mie esigenze personali:

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

Salva come /usr/local/bin/md2pdfe in sudo chmod +x /usr/local/bin/md2pdfseguito.

Uso:

  • md2pdf converte README.md in README.md.pdf

  • md2pdf foo.md converte foo.md in foo.md.pdf

  • md2pdf foo.md bar.pdf converte foo.md in bar.pdf

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.