¿Cómo puedo convertir Markdown con sabor a Github a un PDF

147

Recientemente comencé a aprender Markdown para usar con la documentación, y necesito imprimir algunas de mis páginas de Markdown. Me gustaría utilizar una utilidad de línea de comandos, Terminal, etc. que me permita convertir Markdown con sabor a Github a PDF. Debe tener un resaltado de sintaxis adecuado y no debe verse horrible. Gracias por cualquier ayuda.

dillmo
fuente
La coloración de sintaxis en GitHub no forma parte de GitHub Flavored Markdown. Al menos hasta donde yo sé.
Der Hochstapler
@OliverSalzburg Github usa Linguist para proporcionar resaltado de sintaxis.
DanteTheEgregore
@dillmo, primero convierta a HTML , luego use Chrome para imprimir a pdf.
Pacerier

Respuestas:

150

He tenido éxito al usar el agarre para mostrar el marcado en Chrome y luego usar la opción "Guardar como PDF" de Chrome en el cuadro de diálogo Imprimir.

pip install grip  
grip your_markdown.md

grip renderizará el markdown en localhost: 5000 - solo edite y actualice el navegador. Imprima cuando esté listo.

Esto proporcionó una representación más confiable que pandoc y fue más liviano que instalar látex (requerido por pandoc para la generación de pdf).

La impresión no es la línea de comando en esta respuesta, pero aún así resultó más fácil / más confiable (se parecía al 100% a Github para un documento largo que incluye imágenes relativamente vinculadas y resaltado de código).

Josh Werts
fuente
2
Esto es bastante fácil.
s2t2
16
grip your_markdown.md --export your_markdown.htmlEs una opción útil aquí. Lo exporta al archivo html, que luego puede imprimirse desde la línea de comando usando algo como wkhtmltopdf.
Luke Exton el
1
Lamentablemente, el agarre necesita acceso a GitHub. No funciona sin conexión
nowox
66
Alternativamente, puede descargar (¡gratis!) Atom ( atom.io ), abrir su archivo en Atom, usar control + shift + M para verlo en la vista previa, guardarlo como html, luego abrir el html en su navegador Chrome y guardarlo como pdf.
Andrew Carter el
66
Esto viene con el marco similar a Github a su alrededor. ¿Hay alguna forma de imprimir en PDF, eliminando los bordes / barra de título (es decir, imprimiendo todo dentro del marco)?
Joost
56

También puede usar Node.js basado en markdown-pdf

npm install -g markdown-pdf
markdown-pdf /path/to/markdown
Quanlong
fuente
2
Esto es bastante impresionante y realmente fácil. El problema del enlace proviene de la impresión css de html5 boilerplate que puede comentar o anular en su propia hoja de estilo.
Robert fue el
Me gustaría agregar que esto tiene soporte Unicode listo para usar, lo cual es muy bueno.
Niek
También puede instalar github-markdown-css si desea usar el archivo CSS de GitHub.
jpmc26
@ jpmc26 ¿cómo puede usarlo? No conozco javascript o npm.
Abhishek Bhatia
1
@AbhishekBhatia Este es el primer resultado cuando busqué en Google "introducción npm": smalljs.org/package-managers/npm . Es solo un archivo enterrado en node_modules una vez que lo instala.
jpmc26
39

Echa un vistazo a pandoc . Tiene resaltado de sintaxis. Es posible que requiera que realice cambios (menores) en su documento, ya que tiene su propio sabor de rebaja y no sé qué tan cerca coincide con el sabor de GitHub.

Magnus
fuente
3
Gracias. La ejecución pandoc -hdevolvió el soporte para GitHub Flavored Markdown, por lo que estoy marcando esta pregunta como resuelta.
dillmo
2
Intenté instalar pandocen Fedora Linux y me encontré con una pesadilla de dependencia, principalmente relacionada con LaTex. Mi consejo sería omitir Pandoc y probar otras opciones primero
IanB
Para aquellos que usan letras que no son ASCII y las pierden: agregue opciones de fuente pandoc, como estas:--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
44
Si alguien está buscando solo los comandos: sudo apt install pandoc texlive-latex-recommended texlive-xetex texlive-luatex pandoc-citeproc etoolbox wkhtmltopdf(en Ubuntu, probablemente no todo sea necesario), entoncespandoc --variable urlcolor=cyan myfile.md -o myfile.pdf
Tor Klingberg
@TorKlingberg ¡Gracias, creo que esa es la mejor respuesta!
THC
12

Si el archivo de rebajas se alojó en el repositorio de github, gitprint es una opción interesante para crear pdf / print.

Todo lo que necesitas hacer es reemplazar github.compor gitprint.comen la URL. Aquí hay un ejemplo de la página de inicio de gitprint.

Desafortunadamente, no funciona en las listas de reducción, y solo funciona con archivos de reducción en el repositorio.

rpattabi
fuente
44
Tampoco funciona con imágenes. :(
Adam Arold
... y está mal formateado :(
Moebius
Opción interesante Pros: los enlaces externos se mantienen y son accesibles desde la salida. Contras: la salida es en blanco y negro, los enlaces de anclaje se eliminan, los enlaces externos no se indican visualmente porque están en blanco y negro.
rodey
7

Hay un convertidor en línea disponible en http://www.markdowntopdf.com.
Esto proporciona resaltado de sintaxis de fábrica y es la solución más simple que he visto hasta ahora. También maneja correctamente otras características específicas de GFM, por ejemplo, tablas.

kevgathuku
fuente
44
No maneja imágenes en archivos separados.
Larry K
funciona muy bien
shadi
6

Como dije en mi comentario, Github usa Linguist para proporcionar resaltado de sintaxis. En Github, puede usar esto para especificar el resaltado de sintaxis de esta manera:

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

Desafortunadamente, no hay una buena manera de convertir Markdown directamente en un archivo PDF con resaltado de sintaxis.

Alternativas:

Vim :

Si tiene vim, puede lograr fácilmente el resaltado de sintaxis ejecutando lo siguiente desde un terminal:

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

O dentro de vim:

:hardcopy >/path/to/file.ps

Esto producirá un archivo PostScript que se puede convertir a pdf usando, por ejemplo, ps2pdf:

ps2pdf /path/to/file.ps

Fuente destacada :

Si en su lugar desea seguir la ruta de HTML o LaTeX, puede probar Source-highlight en su lugar. Aquí puede encontrar una lista de todos los idiomas admitidos por Source-highlight .

Algunos ejemplos de comandos de resaltado de fuente incluyen:

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

Usando este archivo de entrada

Y cada uno saca su propio archivo HTML respectivo:

Hello1.html
Hello2.html
Hello3.html

Aquí se pueden encontrar más ejemplos de uso de resaltado de fuente

Ventanas :

Vim , ps2pdf (proporcionado por Ghostscript ) y Source-highlight están disponibles a través de Cygwin .

DanteTheEgregore
fuente
4

Para aquellos con Linux, use pandoc .

Instalar en pc:

sudo apt install pandoc texlive-latex-extra

Sí, necesitas un -extrapaquete debido a las fuentes.

Convertir:

pandoc --from markdown -o output.pdf my-file.md
Andrejs Cainikovs
fuente
Sin <font color="red">embargo
derHugo
3

Recientemente he creado un servicio para convertir documentos de rebajas a PDF. Es compatible con la reducción de sabor de Github, así como el resaltado de sintaxis. El servicio se encuentra en: http://markdown2pdf.com

Saurabh Garg
fuente
no funciona con el archivo zip: no se pudo encontrar el archivo de descuento en el archivo mientras haya uno.
Moebius
tiene "error en la conversión a pdf". Usando markdowntopdf.com en lugar de kevgathuku
shadi
1

Solución minera: convierta markdown con pandoca html (no olvide usar css para pandoc para mostrar los bordes de la tabla) , luego ábralo con libreoffice, elija una opción export as pdf.

NB : ninguna de las soluciones mencionadas aquí y en Internet funcionó para mí: 1) las soluciones basadas en navegador (es decir, grip) están agregando información en exceso, como números de página, que no pude eliminar, 2) la conversión de pandoc a pdf es roto, para mí genera una tabla vacía (quizás debido a Unicode, y sí, lo configuré para usar xetex) , 3) las soluciones basadas en el sitio (es decir, gitprint.com) también están agregando cosas redundantes, como márgenes similares a github, mientras que ¡Solo necesito una tabla simple que generé con awk!

Hola angel
fuente
1
pandocdebería funcionar para usted con opciones como--variable mainfont="Liberation Serif" --variable sansfont="Liberation Sans"
gluk47
@ gluk47 genial, eso funciona!
Hi-Angel
Puedo recomendar esta página para convertir markdown a PDF (o para imprimir) markdownprint.com .
Johan O
@JohanO markdownprint.com parece estar abajo
derHugo
1

He probado varios complementos de Chrome y convertidores en línea.
MDtr2PDF es el mejor. Es compatible con Github-con sabor-markdown y unicode.

doclin
fuente
1
¿Admite imágenes almacenadas en otros archivos?
Larry K
Parece que ya no funciona y no está protegido por TLS.
David Oliver
1

Refiné este fragmento para mis necesidades personales:

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

Guardar como /usr/local/bin/md2pdfy sudo chmod +x /usr/local/bin/md2pdfdespués.

Uso:

  • md2pdf convierte README.md a README.md.pdf

  • md2pdf foo.md convierte foo.md en foo.md.pdf

  • md2pdf foo.md bar.pdf convierte foo.md a bar.pdf

flujo libre
fuente