Comment puis-je mélanger les pages d'un file pdf dans un ordre random?

Je voudrais mélanger les pages d'un document pdf dans un ordre random.

Comment cela peut-il être fait?

Avec les coreutils pdftk et GNU

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 

Avec Python et PyPdf

 #!/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.

  1. Créer un directory de travail temporaire:

     mkdir tmp 
  2. Divisez le document pdf dans de nombreux documents d'une page:

     pdftk original.pdf burst output tmp/pg_%02d.pdf 
  3. 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 
  4. Fusionner tous les documents d'une seule page:

     pdftk tmp/*.pdf cat output random.pdf 
  5. 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