Comment puis-je convertir un arithmétique githubique au format PDF

147

J'ai récemment commencé à apprendre Markdown à utiliser avec la documentation et j'ai besoin d'imprimer quelques-unes de mes pages de Markdown. J'aimerais utiliser un utilitaire de ligne de commande, de terminal, etc. qui me permet de convertir un fichier Markdown au format Github en PDF. La syntaxe doit être correctement mise en évidence et ne doit pas sembler horrible. Merci pour toute aide.

dillmo
la source
La coloration de la syntaxe sur GitHub ne fait pas partie de GitHub Flavored Markdown. Au moins autant que je sache.
Der Hochstapler
@OliverSalzburg Github utilise Linguist pour mettre en évidence la syntaxe.
DanteTheEgregore
@dillmo, convertissez d'abord au format HTML , puis utilisez Chrome pour imprimer en pdf.
Pacerier

Réponses:

150

J'ai réussi à utiliser grip pour afficher le markdown dans Chrome, puis utiliser l'option "Enregistrer au format PDF" de Chrome dans la boîte de dialogue Imprimer.

pip install grip  
grip your_markdown.md

grip rendra le démarquage sur localhost: 5000 - modifiez-le simplement et actualisez le navigateur. Imprimez quand vous êtes prêt.

Cela donnait une représentation plus fiable que pandoc et était plus léger que l’installation de latex (requis par pandoc pour la génération pdf).

L’impression n’est pas une ligne de commande dans cette réponse, mais l’a toujours trouvée plus facile / plus fiable (ressemblait à 100% à Github pour un long document comprenant des images relativement liées et une surbrillance de code).

Josh Werts
la source
2
c'est assez facile.
s2t2
16
grip your_markdown.md --export your_markdown.htmlest une option utile ici. L'exporte dans le fichier html, qui peut ensuite être imprimé à partir de la ligne de commande en utilisant quelque chose comme wkhtmltopdf.
Luke Exton
1
Malheureusement, le grip nécessite l'accès à GitHub. Cela ne fonctionne pas hors ligne
nowox
6
Vous pouvez également télécharger (gratuitement!) Atom ( atom.io ), ouvrir votre fichier dans Atom, utiliser les touches Ctrl + Maj + M pour l’afficher en aperçu, enregistrer au format HTML, puis ouvrir le code HTML dans votre navigateur Chrome et enregistrer au format PDF.
Andrew Carter
6
Cela vient avec le cadre de type Github autour. Existe-t-il un moyen d’imprimer au format PDF en supprimant les bordures / la barre de titre (c.-à-d. Tout imprimer à l’intérieur du cadre)?
Joost
56

Vous pouvez également utiliser Node.js basé sur markdown-pdf

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
Quanlong
la source
2
C'est assez génial et vraiment facile. Le problème de lien provient du css print de html5 boilerplate que vous pouvez simplement commenter ou remplacer dans votre propre feuille de style.
Robert est allé
Je voudrais ajouter que cela prend en charge le support Unicode prêt à l'emploi, ce qui est très agréable.
Niek
Vous pouvez également installer github-markdown-css sur si vous souhaitez utiliser le fichier CSS de GitHub.
jpmc26
@ jpmc26 comment pouvez-vous l'utiliser, je ne connais pas javascript ou npm?
Abhishek Bhatia
1
@AbhishekBhatia C'est le premier résultat quand j'ai cherché "l'introduction de npm" dans Google : smalljs.org/package-managers/npm . C'est juste un fichier enfoui dans node_modules une fois que vous l'avez installé.
jpmc26
39

Regardez pandoc . Il a mis en évidence la syntaxe. Vous devrez peut-être apporter des modifications (mineures) à votre document car il a sa propre version de Markdown et je ne sais pas à quel point il correspond à la version de GitHub.

Magnus
la source
3
Merci. En cours d'exécution pandoc -h, le support de GitHub Flavored Markdown a été rétabli. Je signale donc que cette question est résolue.
dillmo
2
J'ai essayé d'installer pandocsur Fedora Linux et je suis tombé sur un cauchemar de dépendance, principalement lié à LaTex. Mon conseil serait de sauter pandoc et d'essayer d'abord d'autres options
IanB
Pour ceux qui utilisent des lettres non-ASCII et les perdent: ajoutez des options de police à pandoc, comme celles-ci:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
4
Si quelqu'un ne cherche que les commandes: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(sur Ubuntu, ce n'est probablement pas nécessaire), alorspandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg
@ TorKlingberg Merci, je pense que c'est la meilleure réponse!
thc
12

Si le fichier de démarquage était hébergé sur le référentiel github, gitprint est une option intéressante pour créer un fichier pdf / print.

Tout ce que vous avez à faire est de remplacer github.compar gitprint.comdans l'URL. Voici un exemple tiré de la page d'accueil de gitprint.

Malheureusement, cela ne fonctionne pas avec les index de démarques et ne fonctionne qu'avec les fichiers de démarques dans le référentiel.

rpattabi
la source
4
Cela ne fonctionne pas avec les images non plus. :(
Adam Arold
... et est mal formaté :(
Moebius
Option intéressante. Avantages: les liens externes sont maintenus et accessibles depuis la sortie. Inconvénients: la sortie est en noir et blanc, les liens d'ancrage sont supprimés, les liens externes ne sont pas indiqués visuellement car ils sont en noir et blanc.
Rodey
7

Un convertisseur en ligne est disponible à l' adresse http://www.markdowntopdf.com.
Il fournit une mise en évidence syntaxique immédiate et constitue la solution la plus simple que j'ai vue jusqu'à présent. Il gère également correctement d'autres fonctionnalités spécifiques à GFM, par exemple les tables.

kevgathuku
la source
4
Ne gère pas les images dans des fichiers séparés.
Larry K
fonctionne à merveille
shadi
6

Comme je l'ai dit dans mon commentaire, Github utilise Linguist pour mettre en évidence la syntaxe. Sur Github, vous pouvez utiliser ceci pour spécifier la coloration syntaxique comme ceci:

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

Malheureusement, il n’existe aucun moyen efficace de convertir directement Markdown en fichier PDF avec la coloration syntaxique.

Alternatives:

Vim :

Si vous avez vim, vous pouvez facilement obtenir la coloration syntaxique en exécutant ce qui suit à partir d’un terminal:

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

Ou à l'intérieur de vim:

:hardcopy >/path/to/file.ps

Cela produira un fichier PostScript pouvant être converti en pdf en utilisant, par exemple, ps2pdf:

ps2pdf /path/to/file.ps

Surlignage source :

Si vous préférez plutôt emprunter le chemin HTML ou LaTeX, vous pouvez essayer Source-highlight à la place. Une liste de toutes les langues prises en charge par Source-highlight peut être trouvée ici .

Quelques exemples de commandes de sélection de sources incluent:

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

Utiliser ce fichier d'entrée

Et chacun produisant son propre fichier HTML respectif:

Hello1.html
Hello2.html
Hello3.html

Vous trouverez d'autres exemples d'utilisation de la source en surbrillance ici.

Windows :

Vim , ps2pdf (fourni par Ghostscript ) et Source-highlight sont tous disponibles via Cygwin .

DanteTheEgregore
la source
4

Pour ceux qui utilisent Linux, utilisez pandoc .

Installer:

sudo apt install pandoc texlive-latex-extra

Oui, vous avez besoin d'un -extrapaquet à cause des polices.

Convertir:

pandoc --from markdown -o output.pdf my-file.md
Andrejs Cainikovs
la source
N'a pas inclure des images, des liens et des choses comme ignorées <font color="red">si
derHugo
3

J'ai récemment créé un service permettant de convertir des documents de démarquage en PDF. Il prend en charge le démarquage github ainsi que la coloration syntaxique. Le service est situé à l' adresse suivante : http://markdown2pdf.com

Saurabh Garg
la source
ne fonctionne pas avec le fichier zip: impossible de trouver le fichier de démarquage dans l'archive tant qu'il y en a un.
Moebius
"erreur de conversion en pdf". Utilisation de markdowntopdf.com à la place de kevgathuku
shadi
1

Solution minière : convertissez markdown pandocen HTML (n'oubliez pas d'utiliser css pour pandoc pour afficher les bordures des tableaux) , puis ouvrez-le avec libreoffice, choisissez une option export as pdf.

NB : ni l'une ni l'autre des solutions mentionnées ici et sur Internet ne fonctionnaient pour moi: 1) les solutions basées sur un navigateur (c.-à-d. Grip) ajoutent des informations supplémentaires, telles que les numéros de page, que je n'ai pas réussi à supprimer, 2) le conversion de Pandoc en PDF est cassé, pour moi, il génère une table vide (peut-être à cause de l'unicode, et oui, je l'ai configuré pour utiliser xetex) , 3) les solutions basées sur les sites (c'est-à-dire gitprint.com) ajoutent également des éléments redondants, comme des marges de type github, alors que J'ai juste besoin d'un simple tableau que j'ai généré avec awk!

Salut ange
la source
1
pandocdevrait fonctionner pour vous avec des options telles que--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
@ gluk47 cool, ça marche!
Hi-Angel le
Je peux recommander cette page pour convertir markdown en PDF (ou pour imprimer) markdownprint.com .
Johan O
@JohanO markdownprint.com semble être en panne
derHugo
1

J'ai essayé plusieurs plugins chrome et convertisseurs en ligne.
MDtr2PDF est le meilleur. Il supporte le démarquage Github et unicode.

doclin
la source
1
Est-ce qu'il prend en charge les images stockées dans d'autres fichiers?
Larry K
Ne semble plus fonctionner et n'est pas sécurisé par TLS.
David Oliver
1

J'ai raffiné cet extrait pour mes besoins personnels:

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

Enregistrer au fur /usr/local/bin/md2pdfet à mesure sudo chmod +x /usr/local/bin/md2pdf.

Usage:

  • md2pdf convertit README.md en fichier README.md.pdf

  • md2pdf foo.md convertit foo.md en foo.md.pdf

  • md2pdf foo.md bar.pdf convertit foo.md en bar.pdf

fredoverflow
la source