web-dev-qa-db-fra.com

Comment puis-je convertir un abaissement github aromatisé en un PDF

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

132
dillmo

J'ai eu du succès avec grip pour afficher les balises 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 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 nous l’avons tout de même trouvée plus facile/plus fiable (ressemblait à 100% à Github pour un long document comprenant des images relativement liées et une mise en surbrillance du code).

135
Josh Werts

Vous pouvez également utiliser Node.js based markdown-pdf

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

Jetez un coup d'oeil à pandoc . Il a mis en évidence la syntaxe. Vous devrez peut-être apporter des modifications (mineures) à votre document car il a sa propre saveur de démarque et je ne sais pas à quel point il correspond à la saveur de GitHub.

35
Magnus

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

Tout ce que vous avez à faire est de remplacer github.com par gitprint.com dans l'URL. Voici un exemple 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.

11
rpattabi

Un convertisseur en ligne est disponible sur http://www.markdowntopdf.com
Ceci fournit une coloration 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.

7
kevgathuku

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 Markdown directement en un fichier PDF avec une 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

Source-sélectionnez :

Si vous préférez emprunter le chemin HTML ou LaTeX, vous pouvez essayer Source-highlight à la place. Une liste de toutes les langues supportées 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 Source-Highlight ici

Windows :

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

6
DanteTheEgregore

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é à: http://markdown2pdf.com

3
Saurabh Garg

J'ai essayé plusieurs plugins chrome et convertisseurs en ligne.
MDtr2PDF est le meilleur. Il prend en charge le démarquage et l’unicode à saveur Github.

1
doclin

Solution: convertissez markdown avec pandoc en html (n'oubliez pas utilisez 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'est-à-dire la poignée) ajoutent des informations supplémentaires, comme des numéros de page, ne parvient pas à supprimer, 2) Pandoc: la conversion en PDF est interrompue. Pour moi, elle génère une table vide (peut-être à cause de Unicode, et oui, je l'ai configuré pour utiliser xetex)}, basé sur le site solutions (ie gitprint.com)} ajoutent également des éléments redondants, comme des marges de type github, alors que je n'ai besoin que d'un simple tableau généré avec awk!

1
Hi-Angel

Pour ceux qui utilisent Linux, utilisez pandoc .

Installer:

Sudo apt install pandoc texlive-latex-extra

Oui, vous avez besoin du paquet -extra à cause des polices.

Convertir:

pandoc --from markdown -o output.pdf my-file.md
1
Andrejs Cainikovs

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 sous /usr/local/bin/md2pdf et Sudo chmod +x /usr/local/bin/md2pdf par la suite.

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

0
fredoverflow