PDF ToolKit, è questo il significato della contrazione TK nel nome del programma di cui ci accingiamo a vederne le caratteristiche principali. Disponibile per GNU/Linux, Mac OSX, Solaris e Micrsoft Windows, ci permette di manipolare il formato elettronico PDF, le sue caratteristiche e le sue pagine. Con Pdftk sarà possibile effettuare operazioni di unione, divisione, (de)cifratura ed altre che vedremo nel seguito.
1) Pdftk e CLI
Si tratta di uno strumento da riga di comando al quale sarà possibile, come vedremo, affiancare un front-end (GUI) per coloro i quali sono restii all’uso della CLI (Command Line Interface). L’installazione di Pdftk non presenta particolari problemi; ad esempio per distribuzioni come Fedora 11 e Mandriva 2009.1 è sufficiente affidarsi ai gestori dei pacchetti e, una volta impostati i repository, impartire i i comandi;
yum install pdftk
urpmi pdftk
i quali installeranno oltre al pacchetto principale un numero di dipendenze in funzione dello stato attuale della distribuzione. E’ possibile operare anche direttamente dai sorgenti ricordando che in questo caso ci occorrono le librerie libgcj le quali, a seconda della distribuzione, possono essere contenute nel pacchetto gcc-java oppure separatamente nel pacchetto libgcj5-devel o libgcj5-dev. Soddisfatte le dipendenze è sufficiente decomprimere il pacchetto pdftk-1.41.tar.bz2;
tar xjvf pdftk-1.41.tar.bz2
entrare nella cartella pdftk presente nella directory pdftk-1.41;
cd pdftk-1.41/pdftk
e impartire il comando;
make -f Makefile.Generic
per avere, al termine della procedura, il tool (file) pdftk all’interno della cartella omonima. Qualunque sia stata la modalità di installazione a questo punto siamo pronti a definire qualche esempio. Le opzioni tante ed elencarle tutte sarebbe improponibile, pertanto vedremo quelle che, in teoria, dovrebbero essere le più utilizzate. In genere la prima operazione che si tende a compiere è l’estrapolazione di alcune pagine da un documento pdf. E allora vediamo come procedere ipotizzando di voler prelevare e spostare su un nuovo file solo alcune pagine (ad esempio da pagina 2 a pagina 10) e che queste risultino consecutive. Il comando da impartire dovrà essere il seguente:
pdftk A=File.pdf cat A2-10 output Nuovo.pdf
L’opzione cat permette di concatenare le pagine (e quindi i documenti) in ingresso in un unico documento di nome Nuovo.pdf come nel nostro esempio. Ricordiamo che nel caso di un solo file da manipolare, l’identificatore “A” non è necessario. E se le pagine fossero alcune consecutive e altre “sparse” nel documento originale e volessimo accorparle in un unico documento? Niente di più semplice;
pdftk A=File.pdf cat A2-4 A6 A8 output Nuovo.pdf
In questo caso vengono prese le pagine dalla 2 alla 4, la 6 e la 8 nel documento originale e vengono unite nel documento Nuovo.pdf che pertanto conterrà cinque pagine (ricordiamo che nel range di definizione rientrano gli estremi). Naturalmente le stesse operazioni possono essere estese anche a più documenti. Ad esempio, se vogliamo creare un documento unico che presenti le prime 10 pagine consecutive del documento File.pdf e 8 del documento Mio.pdf allora è sufficiente impartire il comando;
pdftk A=File.pdf B=Mio.pdf cat A1-10 B1-8 output Nuovo.pdf
il cui risultato sarà un documento di 18 pagine preso da due file pdf e inglobato all’interno dell’unico file Nuovo.pdf. Con la stessa tecnica vista nel primo esempio è possibile combinare le pagine su due o più documenti pdf, ad esempio;
pdftk A=File.pdf B=Mio.pdf C=Tuo.pdf cat A1-10 B1-8 C5 output Nuovo.pdf
Se invece abbiamo tre o più documenti e vogliamo accorparli in un unico file allora;
pdftk File1.pdf File2.pdf File3.pdf cat output Nuovo.pdf
Alcune volte ci troviamo di fronte a presentazioni (slide) che sono capovolte o ruotate rispetto allo schermo. Anche in questo caso pdftk ci sarà di aiuto grazie a modalità analoghe ma con opzioni opportune, ci permette di ottenere un nuovo file con tutte le slide nella giusta posizione. Ad esempio volendo ruotare di 90 gradi in senso orario le prime due pagine di un documento escludendo nel nuovo documento in pdf tutte le altre pagine meno che la numero 8 per la quale non si vuole alcuna rotazione, è sufficiente il comando;
pdftk A=File.pdf cat A1-2E A8 output Nuovo.pdf
Le flag di manipolazione sono diverse, la “E” nel nostro caso indica di ruotare il documento di 90 gradi in senso orario, se volessimo la rotazione antioraria utilizzeremo la flag “W”, la “S” ruota la pagina di 180 gradi. Le stesse rotazioni possiamo attuarle con le flag “L”, “R” e “D” rispettivamente solo che queste ultime rispetto alle precedenti “aggiustano” le dimensioni della pagina. In alcuni casi potrebbe ritornare utile dividere il documento completo in pagine singole; in questo caso ci viene in aiuto l’opzione burst;
pdftk File.pdf burst output Nuovo_%02d.pdf
dove la stringa “%02d” serve a specificare il numero di cifre da utilizzare nel nome del file; nel nostro esempio si avrà la numerazione su due cifre quindi Nuovo_01.pdf, Nuovo_02.pdf etc. Ovviamente se il file di ingresso è caratterizzato da più di 100 pagine sarà necessaria la formattazione “%03d”. Altre operazioni possono essere la concatenazione in un nuovo file delle sole pagine dispari (o pari) o di una sola porzione di esse utilizzando l’opzione odd (o even). Ad esempio;
pdftk File.pdf cat 1-12odd output Nuovo.pdf
prenderà dalle prime 12 pagine del file File.pdf solo le pagine dispari e le inserirà all’interno del file Nuovo.pdf. Tra le diverse caratteristiche di pdftk anche la possibilità di cifrare (e quindi decifrare) i documenti pdf;
pdftk File.pdf output Cifrato.pdf user_pw password
pdftk Cifrato.pdf input_pw password output Decifrato.pdf
dove al posto della parola password inseriremo la nostra di password. In questo caso se provassimo ad aprire il documento cifrato il risultato sarebbe quello visibile in figura.
Per le numerose altre opzioni vi rimandiamo al manuale in linea (pdftk -help oppure man pdftk). Un vantaggio di pdftk è che si tratta di un tool “scriptabile” ovvero, per coloro i quali sono in grado di realizzare script, è possibile inserirlo all’interno dei propri script al fine di svolgere i compiti più disparati e nelle situazioni più differenti.