====== 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 all’interno 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.