¿Generación automática e impresión de archivos PDF desde Markdown?

4

Estoy buscando una manera de hacer que mi computadora genere e imprima automáticamente archivos PDF desde una carpeta llena de archivos de rebajas.

Entonces, todas las mañanas a las 5 am Quisiera que mi computadora vea mi carpeta / markdown-files, cree un montón de archivos PDF para ir a una carpeta / PDF y también ejecute la impresora para que las páginas me estén esperando.

Hay un par de requisitos que pueden hacer que esto sea un poco complicado:

  1. Los archivos PDF deben tener el título del archivo en la parte superior de cada página
  2. La página debe ser A4
  3. Las líneas deben tener doble espacio al menos.

Solía usar WKPDF para generar archivos PDF, pero ya no funciona en Yosemite.

    
pregunta CGP Grey 27.01.2015 - 22:07

4 respuestas

5

Puede hacer esto con Markdown.pl y htmldoc (1), y ambos se pueden instalar con Homebrew . El flujo básico para hacer un PDF es:

markdown foo.markdown | htmldoc --no-toc --no-title -f foo.pdf -

En cuanto a su nombre de archivo por página, puede incorporar echo para agregarlo como un elemento HTML:

echo $(markdown foo.markdown) "<p>foo</p>" | htmldoc --no-toc --no-title -f foo.pdf -

Y para imprimir, el comando lpr (1) enviará un archivo a su impresora predeterminada.

Atando todo esto:

for filename in 'ls *.markdown';
do
    echo $(markdown "$filename") "<p>$filename</p>" | 
        htmldoc --no-toc --no-title -f "${filename}.pdf" -
    lpr "${filename}.pdf"
done
    
respondido por el Drew Stephens 27.01.2015 - 22:35
2

Aquí hay una solución que utiliza LaTeX para generar el PDF. Si tiene texto de formato largo en los archivos Markdown y desea optimizar la legibilidad tipográfica (y sospecho que sí), LaTeX tiende a hacer un trabajo mucho mejor en comparación con los motores HTML.

Utiliza pandoc como intermediario entre Markdown y LaTeX, y también produce el PDF para usted.

Guión principal

#!/bin/bash

md-dir="MARKDOWN_DIRECTORY_HERE"
pdf-dir="PDF_DIRECTORY_HERE"

cd "${md-dir}"
for filename in *.md; do
    target-pdf="${pdf-dir}/${filename}.pdf"
    pandoc "${filename}" -t latex --latex-engine=xelatex -V geometry=a4paper -V fontsize=11pt -V listings -V header-includes="\usepackage{fancyhdr}\pagestyle{fancyplain}\cfoot{}\rhead{\thepage}\lhead{\texttt{\lstinline/${filename}/}}" -V header-includes="\linespread{2.0}" -o "${target-pdf}"
    echo "produced ${filename}.pdf"
    lpr "${target-pdf}"
done

Configuración requerida

  1. Obtén pandoc de Homebrew: brew install pandoc
  2. Instale la versión mínima de LaTeX llamada BasicTeX

Probando si tienes la configuración correcta

Debería poder ejecutarse en una nueva ventana de Terminal (con bash)

echo "test" | pandoc -t latex --latex-engine=xelatex -o test.pdf

y obtenga un documento test.pdf válido con solo la palabra "prueba"

Personalizaciones

Hay muchas cosas que puedes modificar con la configuración de LaTeX desde la línea de comandos

  1. modifique el espacio entre líneas cambiando el multiplicador \linespread{2.0}
  2. ajusta las marcas reemplazando geometry=a4paper con geometry=a4paper,left=XXmm,right=XXmm,top=XXmm,bottom=XXmm
  3. cambie el tamaño de fuente encadenando 11pt a 10pt o 12pt, y todo debería escalar en consecuencia
  4. cambie la fuente principal agregando otro argumento a pandoc : -V mainfont="NAME OF FONT" . También puede establecer monofont de esta manera.
respondido por el Tim Lin 28.01.2015 - 12:23
-1

No he usado WKPDF, pero su autor sugiere un método por el cual se puede hacer que funcione en Yosemite: enlace

    
respondido por el AndrewRich 27.01.2015 - 22:29
-1

Puedes usar PhantomJS . No es tan sencillo como WKPDF para la generación de PDF, ya que tiene una gama más amplia de funciones, pero funciona bien.

    
respondido por el UloPe 27.01.2015 - 22:36

Lea otras preguntas en las etiquetas