https://wiki.golem.linux.it/index.php?title=PDF_Batch&feed=atom&action=historyPDF Batch - Cronologia2024-03-29T11:50:01ZCronologia della pagina su questo sitoMediaWiki 1.35.5https://wiki.golem.linux.it/index.php?title=PDF_Batch&diff=8314&oldid=prevGiulio: Creata pagina2019-07-06T21:35:04Z<p>Creata pagina</p>
<p><b>Nuova pagina</b></p><div>'''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 [https://inkscape.org/it/ Inkscape] o [https://www.latex-project.org/ LaTeX].<br />
<br />
== Inskcape: Estensione Generator ==<br />
Inkscape è un versatile programma open source per la grafica vettoriale e [http://wiki.colivre.net/Aurium/InkscapeGenerator Generator] è una estensione realizzata da un utente brasiliano proprio per la realizzazione di batch di PDF. Per utilizzarla è ovviamente necessario installarla: si scarica l'[http://wiki.colivre.net/pub/Aurium/InkscapeGenerator/ink-generator.tgz archivio] dal sito e lo si scompatta nella cartella delle estensioni di Inkscape.<br />
<br />
* GNU/Linux:<br/><br />
Installazione globale: (per tutti gli utenti)<br />
<code>/usr/share/inkscape/extensions</code><br/><br />
Installazione locale: (per l'utente corrente)<br />
<code>~/.inkscape/extensions</code><br />
* OS X:<br/><br />
<code>~/.inkscape/extensions</code><br />
* Windows:<br/><br />
<code>C:\Program files\Inkscape\share\extensions</code><br/><br />
Per esserne sicuri eseguire "inkscape -x"!<br />
<br />
Si ipotizza di voler riempire tre campi nel documento con nome, indirizzo e voto di ogni studente.<br />
Si inseriscono degli identificatori <code>%VAR_xx%</code> 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 (<code>%VAR_1%</code>, <code>%VAR_2%</code>, ...). Verranno poi generati tanti PDF quante sono le righe.<br />
<br />
L'estensione si trova sotto il menù Estensioni > Varie > Generator.... Sono richiesti i seguenti parametri:<br />
<br />
* Collect values by column position: ogni identificatore corrisponde appunto al numero della colonna;<br />
* 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;<br />
* Exportation format: PDF, ma volendo si può esportare anche in SVG o in formato raster;<br />
* DPI Jpeg images: risoluzione delle immagini JPG. Per files da stampare si suggerisce fra 300 e 600 onde evitare immagini "sgranate";<br />
* Output pattern: nome dei file in output. È possibile richiamare gli identificatori per usarli nel noem/percorso.<br />
<br />
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.<br />
<br />
<div><ul> <br />
<li style="display: inline-block;"> [[File:PDF batch-csv.png|thumb|none|220px|File CSV di esempio aperto con Calc]] </li><br />
<li style="display: inline-block;"> [[File:PDF batch-sample inkscape.png|thumb|none|220px|File modello di Inkscape]] </li><br />
<li style="display: inline-block;"> [[File:PDF_batch-generator_window.png|thumb|none|220px|Finestra dell'estensione]] </li><br />
<li style="display: inline-block;"> [[File:PDF_batch-exported_inkscape.png|thumb|none|220px|Uno dei PDF esportati]] </li><br />
</ul></div><br />
<br />
== Metodo LaTeX ==<br />
<br />
Usare il software di impaginazione LaTeX per lo scopo è sicuramente il metodo più tecnico.<br />
Si suppone che chi sta leggendo mastichi già abbastanza tale programma, altrimenti è consigliato e più immediato il metodo precedente.<br />
<br />
Definito il documento da compilare si definisce un array con i dati, che deve avere la forma mostrata nel seguente estratto di codice.<br />
Il documento va quindi racchiuso in un ciclo foreach che sarà ripetuto per ogni elemento dell'array.<br />
Con il costrutto del foreach si definiscono anche gli identificatori con cui richiamare i campi (nell'esempio \nome, \indirizzo, \voto).<br />
LaTeX produce un unico file PDF inserendo automaticamente le interruzioni di pagina <br />
<br />
%% Intestazione omessa<br />
\begin{document}<br />
% INSERISCI QUI le informazioni separate da /. Ogni persona<br />
% va separata con una virgola<br />
\def \elementi{Conte Mascetti/Via alla Giapponese/7,<br />
Signor Gioforchio/Via di Qui/6,<br />
Tizio Caio/Vicolo Stretto/8,<br />
John Doe/Piazza Italia/10,<br />
Sam Pronio/Largo di Molto/9,<br />
Mr X/Viale dei Pini/6<br />
}<br />
<br />
% Ciclo for che crea le pagine<br />
\foreach \nome/\indirizzo/\voto [count=\x from 0] in \elementi {<br />
# Interruzione di pagina, eccetto per la prima<br />
\ifnum\x>0<br />
\clearpage<br />
\fi<br />
<br />
%%% QUI CI VA IL DOCUMENTO<br />
}<br />
\end{document}<br />
<br />
[[Category:Howto]]</div>Giulio