Je voudrais mélanger les pages d'un document pdf dans un ordre random.
Comment cela peut-il être fait?
Déterminez le nombre de pages dans le file PDF, puis appelez shuf
pour générer une list random de numéros de page et appelez à nouveau pdftk
pour extraire la séquence de pages donnée.
pdftk original.pdf cat $(shuf 1-$(pdftk original.pdf dump_data | awk '$1=="NumberOfPages:" {print $2}')) output randomized.pdf
#!/usr/bin/env python2 import random, sys from pyPdf import PdfFileWriter, PdfFileReader input = PdfFileReader(sys.stdin) output = PdfFileWriter() pages = range(input.getNumPages()) random.shuffle(pages) for i in pages: output.addPage(input.getPage(i)) output.write(sys.stdout)'
Utilisation: /path/to/script <original.pdf >randomized.pdf
Nous utiliserons pdftk
pour effectuer des opérations sur le document pdf.
Créer un directory de travail temporaire:
mkdir tmp
Divisez le document pdf dans de nombreux documents d'une page:
pdftk original.pdf burst output tmp/pg_%02d.pdf
Renommez le document d'une page avec des noms randoms:
for name in tmp/*.pdf; do mv "tmp/$name" tmp/$(echo "$name" | sha1sum | cut -f1 -d' ').pdf done
Fusionner tous les documents d'une seule page:
pdftk tmp/*.pdf cat output random.pdf
Nettoyez le directory de travail temporaire:
rm -r tmp
une petite amélioration à Gilles répond:
pdftk original.pdf cat $(shuf --input-range=1-$(pdftk original.pdf dump_data | awk '$1=="NumberOfPages:" {print $2}')) output randomized.pdf