4 votos

¿Generar e imprimir automáticamente archivos PDF desde Markdown?

Estoy buscando una forma de hacer que mi ordenador genere e imprima automáticamente archivos PDF a partir de una carpeta llena de archivos markdown.

Así que, cada mañana a las 5AM querría que mi ordenador mirara mi carpeta /markdown-files, creara un montón de PDFs para ir a una carpeta /PDF y también ejecutara la impresora para que las páginas me estuvieran esperando.

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

  1. Los 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 estar a doble espacio como mínimo.

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

5voto

alanl Puntos 492

Puede hacerlo con Markdown.pl y htmldoc(1), que pueden instalarse 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 tu nombre de archivo por página, puedes incorporar echo para añadirlo como 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 por defecto.

Atando cabos:

for filename in `ls *.markdown`;
do
    echo $(markdown "$filename") "<p>$filename</p>" | 
        htmldoc --no-toc --no-title -f "${filename}.pdf" -
    lpr "${filename}.pdf"
done

2voto

Tim Lin Puntos 121

Esta es una solución que utiliza LaTeX para generar el PDF. Si tienes texto largo en los archivos Markdown y quieres optimizar la legibilidad tipográfica (y sospecho que lo haces), 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.

Principal script

#!/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. Obtenga 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ías poder ejecutar en una nueva ventana de Terminal (con bash)

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

y obtener un test.pdf documento con sólo la palabra "test"

Personalizaciones

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

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

-1voto

Syang Chen Puntos 846

No he utilizado WKPDF, pero su autor sugiere un método para hacerlo funcionar en Yosemite: https://github.com/plessl/wkpdf/wiki/How-to-install-on-MacOS-10.10-Yosemite

-1voto

Scott Felhofer Puntos 146

Puede utilizar PhantomJS . No es tan sencillo como WKPDF para la generación de PDF, ya que tiene una gama más amplia de características, pero funciona bien.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X