Estoy buscando una manera de que mi computadora genere e imprima automáticamente archivos PDF desde una carpeta llena de archivos de descuento.
Por lo tanto, todas las mañanas a las 5 a.m. quisiera que mi computadora mirara mi carpeta /markdown-files, creara un montón de archivos PDF 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:
Solía usar WKPDF para generar archivos PDF, pero ya no funciona en Yosemite.
Puede hacer esto con Markdown.pl y htmldoc(1), los cuales 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 esto por completo:
for filename in `ls *.markdown`;
do
echo $(markdown "$filename") "<p>$filename</p>" |
htmldoc --no-toc --no-title -f "${filename}.pdf" -
lpr "${filename}.pdf"
done
Aquí hay una solución que usa LaTeX para generar el PDF. Si tiene texto de formato largo en los archivos Markdown y le gustaría optimizar la legibilidad tipográfica (y sospecho que sí), LaTeX tiende a hacer un trabajo mucho mejor en comparación con los motores HTML.
Se utiliza pandoc
como intermediario entre Markdown y LaTeX, y también produce el PDF para usted.
#!/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
pandoc
de Homebrew:brew install pandoc
Debería poder ejecutar en una nueva ventana de Terminal (con bash)
echo "test" | pandoc -t latex --latex-engine=xelatex -o test.pdf
y obtenga un test.pdf
documento válido con solo la palabra "prueba"
Hay muchas cosas que puede modificar con la configuración de LaTeX desde la línea de comandos
\linespread{2.0}
multiplicadorgeometry=a4paper
congeometry=a4paper,left=XXmm,right=XXmm,top=XXmm,bottom=XXmm
11pt
a 10 o 12 puntos, y todo debería escalar en consecuenciapandoc
: -V mainfont="NAME OF FONT"
. También puede configurar monofont
de esta manera.\input{my-template-file}
desde la línea de comando.No he usado WKPDF, pero su autor sugiere un método por el cual se puede hacer que funcione en Yosemite: https://github.com/plessl/wkpdf/wiki/How-to-install-on-MacOS-10.10-Yosemite
Podrías 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.
Gris CGP
Gris CGP
dibujó stephens
Gris CGP
ls *.md
; do echo $(markdown $nombre de archivo) "<p>$nombre de archivo</p>" | htmldoc --no-toc --no-title --fontspacing 3 --size a4 -f ${nombre de archivo}.pdf -lpr ${nombre de archivo}.pdf hechoGris CGP
dibujó stephens
Gris CGP
sin ladera
$filename
donde sea que se use como argumento para un comando para superar esto. Entonces debería funcionar también con canalizaciones en el nombre.andrybak
ls
la salida" ? Entonces, en lugar de`ls *.markdown`
debería ser solo*.markdown
(con un globo *). PD Además, es una mejor práctica usar$(command)
en lugar de acentos graves`command`
.Gris CGP
dibujó stephens
cinfo.quantize_colors = (boolean)0;
. Luego, con un./configure && make
, compila y ejecuta para mí (el programa de salida es htmldoc/htmldoc)