Aggiornare l'indice di un file PDF con pdftk
Per eseguire quanto riporterò nel seguito avrete bisogno di pdftk, si tratta di una piccola utility che permette di modificare file PDF da linea di comando.
La trovate all'indirizzo http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/. Per modificare l'indice avrete bisogno di una versione aggiornata (personalmente ho potuto verificare che la versione 1.41 non permette l'aggiornamento dell'indice, la versione 1.45 sì).
Per estrarre i metadata dal nostro file pdf (incluso l'indice), digitiamo il comando
pdftk in.pdf dump_data > metadata.txt
Aprendo il file metadata.txt troveremo un contenuto del tipo
~~READMORE~~
InfoBegin InfoKey: Creator InfoValue: pdftk 1.45 - www.pdftk.com InfoBegin InfoKey: Producer InfoValue: itext-paulo-155 (itextpdf.sf.net-lowagie.com) InfoBegin InfoKey: ModDate InfoValue: D:20130108135555-01'00' InfoBegin InfoKey: CreationDate InfoValue: D:20130108135555-01'00' PdfID0: a167ad7c526ea1c111b6b0774c427cd8 PdfID1: 8b2a606b6e878c04d1623d508f804a9e NumberOfPages: 400 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals
Dobbiamo ora aggiungere le informazioni relative al nostro indice. Ciascuna riga dell'indice sarà individuata da quattro linee
BookmarkBegin BookmarkTitle: Titolo BookmarkLevel: 2 BookmarkPageNumber: 256
BookmarkBegin ci dice che stiamo inserendo una voce dell'indice. BookmarkTitle è il titolo del paragrafo che comparirà nell'indice. BookmarkLevel è il livello del paragrafo (il capitolo sarà di livello 1, i paragrafi principali del capitolo saranno di livello 2, i paragrafi secondari contenuti allinterno dei paragrafi saranno di livello 3, e così via). BookmarkPageNumber è il numero della pagina cui rimanderà il link.
Nel nostro file metadata.txt aggiungiamo in coda le informazioni relative all'indice. Ad esempio
InfoBegin InfoKey: Creator InfoValue: pdftk 1.45 - www.pdftk.com InfoBegin InfoKey: Producer InfoValue: itext-paulo-155 (itextpdf.sf.net-lowagie.com) InfoBegin InfoKey: ModDate InfoValue: D:20130108135555-01'00' InfoBegin InfoKey: CreationDate InfoValue: D:20130108135555-01'00' PdfID0: a167ad7c526ea1c111b6b0774c427cd8 PdfID1: 8b2a606b6e878c04d1623d508f804a9e NumberOfPages: 400 PageLabelNewIndex: 1 PageLabelStart: 1 PageLabelNumStyle: DecimalArabicNumerals BookmarkBegin BookmarkTitle: Foreword BookmarkLevel: 1 BookmarkPageNumber: 8 BookmarkBegin BookmarkTitle: Preface BookmarkLevel: 1 BookmarkPageNumber: 9 BookmarkBegin BookmarkTitle: Acknowledgments BookmarkLevel: 1 BookmarkPageNumber: 11
A questo punto aggiorniamo i metadata nel file PDF con il comando
pdftk in.pdf update_info metadata.txt output out.pdf
Il file out.pdf contiene l'indice aggiornato.