¶ Scrittura e documenti

Pandoc: convertire documenti tra Markdown, Word, PDF e HTML

Come usare Pandoc per trasformare un testo Markdown in DOCX, PDF, HTML o EPUB: comandi base, modelli di stile, metadati, indice e problemi tipici.

Pandoc è un programma a riga di comando che converte documenti da un formato all'altro. Legge Markdown, DOCX, HTML, LaTeX, ODT e molti altri formati, e scrive in altrettanti. È gratuito, open source e funziona su Windows, macOS e Linux.

Il suo valore pratico è permettere di scrivere una sola volta, in un formato semplice, e ottenere poi le versioni che servono: un DOCX da mandare a chi lavora in Word, un PDF da archiviare, una pagina HTML da pubblicare. Nel mio lavoro è lo strumento che chiude il cerchio tra appunti in Markdown e documenti consegnabili.

Come ragiona Pandoc

Pandoc non traduce direttamente da un formato all'altro. Legge il file di partenza, lo trasforma in una rappresentazione interna fatta di blocchi (titoli, paragrafi, elenchi, tabelle, note) e da lì genera il formato di arrivo.

Questo spiega il suo comportamento: conserva molto bene la struttura del documento e molto meno l'aspetto. Un titolo di livello 2 resta un titolo di livello 2; un colore applicato a mano in Word, invece, va perso. Se la struttura è curata, la conversione è pulita.

I comandi di base

Il formato si deduce dall'estensione dei file:

pandoc relazione.md -o relazione.docx
pandoc relazione.md -o relazione.html --standalone
pandoc relazione.docx -o relazione.md
  • -o indica il file di uscita.
  • --standalone (o -s) produce un documento completo, con intestazione, invece di un frammento.
  • La terza riga mostra la conversione inversa: da Word a Markdown, utile per recuperare testi scritti da altri.

Per indicare formati in modo esplicito si usano -f (from) e -t (to), per esempio -f docx -t gfm.

Ottenere un PDF

Pandoc non disegna da solo i PDF: si appoggia a un motore esterno. Il più comune è LaTeX, che va installato a parte:

pandoc relazione.md -o relazione.pdf --pdf-engine=xelatex -V lang=it

XeLaTeX e LuaLaTeX gestiscono meglio i caratteri accentati e i font di sistema. In alternativa si può passare da HTML e usare un motore come WeasyPrint, che impagina con i CSS. Se l'installazione di LaTeX vi sembra pesante, esiste anche la strada più semplice: convertire in DOCX o ODT e salvare in PDF dal programma di videoscrittura.

Dare uno stile al DOCX

Per default il DOCX generato usa stili neutri. Per ottenere il vostro aspetto aziendale si usa un documento di riferimento:

  1. Generate il file di base: pandoc -o riferimento.docx --print-default-data-file reference.docx.
  2. Apritelo in Word o Writer e modificate gli stili dei titoli, del corpo del testo, delle tabelle e così via. Modificate gli stili, non il testo.
  3. Convertite usando quel file: pandoc testo.md -o testo.docx --reference-doc=riferimento.docx.

Da quel momento ogni conversione eredita font, colori, margini e spaziature. È il motivo per cui conviene scrivere in Markdown anche documenti che alla fine verranno consegnati in Word.

Metadati, indice e numerazione

Titolo, autore e data possono stare nell'intestazione YAML del file Markdown oppure sulla riga di comando con -M title="...". Altre opzioni utili:

Opzione Effetto
--toc Inserisce un indice dei contenuti
--toc-depth=2 Limita l'indice ai primi due livelli
-N Numera i titoli (1, 1.1, 1.2…)
--resource-path=img Indica dove cercare le immagini
--citeproc Elabora le citazioni bibliografiche

Automatizzare con un file di configurazione

Quando le opzioni diventano tante, riscriverle ogni volta è scomodo e fonte di errori. Pandoc accetta file di impostazioni (--defaults=impostazioni.yaml) in cui elencare formato di uscita, documento di riferimento, motore PDF e filtri. In alternativa basta un piccolo script o un Makefile. Così chiunque nel gruppo ottiene lo stesso risultato con un solo comando.

Problemi frequenti

  • Immagini mancanti. I percorsi sono relativi alla cartella da cui lanciate il comando, non a quella del file. Usate --resource-path o lanciate Pandoc dalla cartella giusta.
  • Tabelle complesse. Celle unite e tabelle annidate di Word non hanno un equivalente in Markdown e vengono semplificate.
  • Formattazione diretta persa. Grassetti e corsivi restano; colori, evidenziazioni e font scelti a mano spariscono. È un segnale che il documento originale non usava gli stili.
  • Caratteri strani nel PDF. Spesso dipende dal motore: con pdflatex alcuni caratteri Unicode falliscono, con xelatex di solito no.

In sintesi

  • Pandoc converte tra decine di formati passando per una struttura interna comune.
  • Conserva bene titoli, elenchi, tabelle e note; perde la formattazione applicata a mano.
  • Il PDF richiede un motore esterno, di solito XeLaTeX o LuaLaTeX.
  • Con un documento di riferimento il DOCX generato prende lo stile aziendale.
  • Un file di impostazioni rende le conversioni ripetibili da tutto il gruppo.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche