PDF Batch

Da GolemWiki.
Jump to navigation Jump to search

Problema: realizzare un lotto di PDF compilati con dati tabulati (esempio degli attestati di partecipazione ad un corso: una decina di file PDF identici, fatta eccezione per il nome e le informazioni del partecipante). Si riportano due utili metodi, mediante Inkscape o LaTeX.

Inskcape: Estensione Generator

Inkscape è un versatile programma open source per la grafica vettoriale e Generator è una estensione realizzata da un utente brasiliano proprio per la realizzazione di batch di PDF. Per utilizzarla è ovviamente necessario installarla: si scarica l'archivio dal sito e lo si scompatta nella cartella delle estensioni di Inkscape.

  • GNU/Linux:

Installazione globale: (per tutti gli utenti) /usr/share/inkscape/extensions
Installazione locale: (per l'utente corrente) ~/.inkscape/extensions

  • OS X:

~/.inkscape/extensions

  • Windows:

C:\Program files\Inkscape\share\extensions
Per esserne sicuri eseguire "inkscape -x"!

Si ipotizza di voler riempire tre campi nel documento con nome, indirizzo e voto di ogni studente. Si inseriscono degli identificatori %VAR_xx% nelle caselle di testo dove si vogliono far comparire i dati, l'estensione provvederà ad eseguire la sostituzione utilizzando un file .csv come sorgente dati. Ogni colonna corrisponde ad un identificatore incrementale (%VAR_1%, %VAR_2%, ...). Verranno poi generati tanti PDF quante sono le righe.

L'estensione si trova sotto il menù Estensioni > Varie > Generator.... Sono richiesti i seguenti parametri:

  • Collect values by column position: ogni identificatore corrisponde appunto al numero della colonna;
  • Data file: il nome del file csv, da salvare per semplicità nella stessa cartella del file di Inkscape. È possibile comunque specificare percorsi assoluti o relativi;
  • Exportation format: PDF, ma volendo si può esportare anche in SVG o in formato raster;
  • DPI Jpeg images: risoluzione delle immagini JPG. Per files da stampare si suggerisce fra 300 e 600 onde evitare immagini "sgranate";
  • Output pattern: nome dei file in output. È possibile richiamare gli identificatori per usarli nel noem/percorso.

Si può quindi lanciare lo script e attendere l'esportazione. Al termine si possono aprire i files: da notare che vengono mantenute, giustamente, le proprietà attribuite agli identificatori nelle rispettive caselle di testo.

  • File CSV di esempio aperto con Calc
  • File modello di Inkscape
  • Finestra dell'estensione
  • Uno dei PDF esportati

Metodo LaTeX

Usare il software di impaginazione LaTeX per lo scopo è sicuramente il metodo più tecnico. Si suppone che chi sta leggendo mastichi già abbastanza tale programma, altrimenti è consigliato e più immediato il metodo precedente.

Definito il documento da compilare si definisce un array con i dati, che deve avere la forma mostrata nel seguente estratto di codice. Il documento va quindi racchiuso in un ciclo foreach che sarà ripetuto per ogni elemento dell'array. Con il costrutto del foreach si definiscono anche gli identificatori con cui richiamare i campi (nell'esempio \nome, \indirizzo, \voto). LaTeX produce un unico file PDF inserendo automaticamente le interruzioni di pagina

%% Intestazione omessa
\begin{document}
% INSERISCI QUI le informazioni separate da /. Ogni persona
% va separata con una virgola
\def \elementi{Conte Mascetti/Via alla Giapponese/7,
	Signor Gioforchio/Via di Qui/6,
	Tizio Caio/Vicolo Stretto/8,
	John Doe/Piazza Italia/10,
	Sam Pronio/Largo di Molto/9,
	Mr X/Viale dei Pini/6
}

% Ciclo for che crea le pagine
\foreach \nome/\indirizzo/\voto [count=\x from 0] in \elementi {
    # Interruzione di pagina, eccetto per la prima
	\ifnum\x>0
		\clearpage
	\fi
    
    %%% QUI CI VA IL DOCUMENTO
}
\end{document}