GLG Programs fa uso di cookie per migliorare l'esperienza di navigazione degli utenti, ma non per tracciarne un profilo. Proseguendo nella navigazione, si accetta implicitamente l'utilizzo dei cookie.
[OK]Note legaliNon mi importa
Logo GLGPrograms Logo GLGPrograms

PDF Batch

Proprio in questi giorni mi sono imbattuto nell'esigenza di dover realizzare degli attestati di partecipazione ad un corso: una decina di file PDF identici, fatta eccezione per il nome e le informazioni del partecipante. Qui riporto due utili metodi per far ciò: uno con una estensione per Inkscape e l'altro con $\LaTeX$.

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"!

Il funzionamento non è proprio immediato al primo uso: mettiamo di voler riempire tre spazi nel documento che segue con nome, indirizzo e voto di ogni studente. Negli spazi dove si vuol far comparire i testi variabili bisogna inserire degli identificatori che l'estensione provvederà a sostituire, qui %VAR_1% per il nome, %VAR_2% per l'indirizzo e %VAR_3% per il voto. In generale l'identificatore è %VAR_numero%.
Le informazioni vengono pescate da un file .csv generabile con un qualsiasi foglio di calcolo: il numero di ogni identificatore corrisponde ad una diversa colonna del foglio. Verranno poi generati tanti PDF quante sono le righe.

Esempio del file CSV File incompleto dimostrativo A sinistra il file CSV di esempio aperto con LibreOffice: la struttura riporta nella prima colonna il nome, nella seconda l'indirizzo, nella terza il voto.
A destra un file Inkscape di esempio.

È giunto il momento di lanciare l'estensione, che troviamo sotto il menù Estensioni > Varie > Generator.... Nella finestra che compare impostiamo i parametri come segue:

Si può quindi lanciare lo script e attendere l'esportazione. Al termine si possono aprire i files: da notare che viene mantenuta, giustamente, la formattazione attribuita ad ogni identificatore.

Finestra estensione generator PDF esportati Un PDF completato A sinistra la finestra dell'estensione.
A destra i PDF esportati ed uno di essi aperto.

Metodo $\LaTeX$

Usare il software di impaginazione \LaTeX per lo scopo è sicuramente il metodo più nerd. Si suppone che chi sta leggendo mastichi già abbastanza tale programma, altrimenti rimando al più immediato metodo precedente.
Al solito si realizza la struttura della pagina desiderata. Dopodiché si definisce un array con i dati da inserire, che deve avere la forma mostrata nel seguente estratto di codice. Le istruzioni relative alla struttura del documento vanno poi racchiuse in un ciclo foreach che viene ripetuto per ogni elemento dell'array. Ai dati si accede richiamando le tre colonne \nome, \indirizzo,\nome.

Volendo inserire più campi è sufficiente aggiungere colonne all'array \elementi e specificandone il nome nel foreach, utilizzando la barra / come separatore.

$\LaTeX$ produce un unico file PDF, inserendo automaticamente un'interruzione di pagina ogni volta che il foreach viene ripetuto (tranne per la prima pagina!). Segue esempio...

\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}
Le varie pagine del PDF generato con LaTeX Una dettaglio di una pagina del PDF
Pagina scritta da

Hai una domanda? Scrivici!
Questa pagina ti è piaciuta? Condividila!
Share on Facebook Share on Google+ Share on linkedin