Auto Generazione e stampa di file PDF da Markdown?

4

Sto cercando un modo per far sì che il mio computer generi automaticamente e stampi file PDF da una cartella piena di file di markdown.

Quindi, ogni mattina alle 5:00, vorrei che il mio computer guardasse la mia cartella / markdown, creasse un mucchio di PDF da inserire in una cartella / PDF e facesse girare la stampante in modo che le pagine mi stessero aspettando.

Ci sono un paio di requisiti che potrebbero renderlo un po 'complicato:

  1. I PDF dovrebbero avere il titolo del file nella parte superiore di ogni pagina
  2. La pagina deve essere A4
  3. Le linee devono essere almeno doppie.

Usavo WKPDF per generare PDF, ma non funziona più su Yosemite.

    
posta CGP Grey 27.01.2015 - 22:07
fonte

4 risposte

5

Puoi farlo con Markdown.pl e htmldoc (1), entrambi i quali possono essere installati con Homebrew . Il flusso di base per creare un PDF è:

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

Come per il tuo nome di file per pagina, puoi aggiungere echo per aggiungerlo come elemento HTML:

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

E per la stampa, il comando lpr (1) invierà un file alla stampante predefinita.

Tutto questo:

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

Ecco una soluzione che utilizza LaTeX per generare il PDF. Se hai un testo lungo nei file Markdown e desideri ottimizzare la leggibilità tipografica (e ho il sospetto che tu lo faccia), LaTeX tende a fare un lavoro molto migliore rispetto ai motori HTML.

Utilizza pandoc come intermediario tra Markdown e LaTeX e produce anche il PDF per te.

Script principale

#!/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

Impostazione richiesta

  1. Ottieni pandoc da Homebrew: brew install pandoc
  2. Installa la versione minima di LaTeX chiamata BasicTeX

Verifica se la configurazione è corretta

Dovresti essere in grado di eseguire una nuova finestra di Terminale (con bash)

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

e ottieni un documento test.pdf valido con solo la parola "test"

Personalizzazioni

C'è molto che puoi modificare con le impostazioni di LaTeX dalla riga di comando

  1. modifica l'interlinea modificando il \linespread{2.0} moltiplicatore
  2. regola i segni sostituendo geometry=a4paper con geometry=a4paper,left=XXmm,right=XXmm,top=XXmm,bottom=XXmm
  3. modifica la dimensione del carattere concatenando 11pt a 10pt o 12pt, e tutto dovrebbe essere ridimensionato di conseguenza
  4. cambia il carattere principale aggiungendo un altro argomento a pandoc : -V mainfont="NAME OF FONT" . Puoi anche impostare monofont in questo modo.
risposta data 28.01.2015 - 12:23
fonte
-1

Non ho usato WKPDF, ma il suo autore suggerisce un metodo con cui può essere fatto funzionare in Yosemite: link

    
risposta data 27.01.2015 - 22:29
fonte
-1

Potresti usare PhantomJS . Non è semplice come WKPDF per la generazione di PDF poiché ha una gamma più ampia di funzioni, ma funziona bene.

    
risposta data 27.01.2015 - 22:36
fonte

Leggi altre domande sui tag