La réponse Ghostscript de ThiagoPonte est excellente pour sa portabilité, mais elle n'explique pas comment utiliser une liste de pages discontinues, comme 2, 6, 7, 8, 9, 11. Cela est possible avec -sPageList
:
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sPageList=2,6-9,11 -sOutputFile=out.pdf in.pdf
Cependant, je n'ai pas réussi à le faire fonctionner sur des versions plus anciennes de Ghostscript, auquel cas, inspiré de une question sur Stack Overflow J'ai créé ce Shell Shell qui ne s'appuie que sur -dFirstPage
et -dLastPage
:
#!/bin/sh -f
if [ "$#" != 2 ] && [ "$#" != 3 ]; then
>&2 echo "Usage: $0 pagelist infile [outfile]"
exit 11
fi
range=$1
infile=$2
outfile=${3-"${2%pdf}"out.pdf}
set --
IFS=,
for i in $range; do
set -- "$@" "-dFirstPage=${i%-*}" "-dLastPage=${i#*-}" "$infile"
done
gs -sOutputFile="$outfile" -sDEVICE=pdfwrite -dNOPAUSE -dBATCH "$@"
Vous pouvez le sauvegarder dans un répertoire PATH tel que /usr/local/bin/
et le rendre exécutable avec chmod +x scriptname
et ensuite, il suffit d'appeler
scriptname 2,6-9,11 in.pdf out.pdf