>>Je voudrais bien virer la derni�re page imprimable de plusieurs documents
>>PDF. Auriez-vous une id�e?

En fait, tu peux combiner les outils suivants (paquet ghostscript):

- pdf2ps: convertit un PDF en PostScript
- psselect: permet de s�lectionner des pages dans un document PostScript
    -> l'option "-p" permet de s�lectionner des intervalles de pages �
       garder, les autres seront enlev�es du document PS;
       toute l'astuce est dans la notation "-_2" qui signifie
       "du d�but (rien) � (-) la 2�me page en partant de la fin (_2)"
- ps2pdf: convertit PostScript en PDF
    -> ps2pdf13 g�n�re un PDF version 1.3 (acrobat >= 4)

Voici un script bash qui fait ce qu'il te faut pour un ou plusieurs
fichier(s) PDF pass�s en param�tres au script...
(les PDF originaux sont conserv�s comme <nom>.pdf.orig)

Note que je l'ai fortement comment� et �crit bien propre (quelques
astuces bash en passant) ;-)

Seule chose qui est dommage: psselect ne sait pas travailler sur STDIN
comme source, il lui faut un fichier sur disque (il fait un seek()), ce
qui n�cessite la cr�ation d'un fichier temporaire (cf. tmpfile dans le
script) - fais attention, ce fichier est tr�s grand (dans mes tests,
un PDF de 2MB (bcp de graphiques, 35 pages) m'a donn� un fichier
temporaire (PostScript) de 85 MB !!!) donc sois bien sur d'avoir assez
de place dans /tmp ;-)

- - - - snip - - - - - - - - - - - - - - - - - - - - - - - - - - -

#!/bin/bash
# Script to remove the last page from PDF files

# Random name for the temporary file
tmpfile=/tmp/$0-$$-$RANDOM.tmp

# Default: be verbose
VERBOSE=yes

# Store script name (basename, remove path)
SCRIPT_NAME=${0##*/}

function help
{
cat<<EOF
$SCRIPT_NAME - remove last page from PDF files

Syntax: $SCRIPT_NAME [-q] [-h] <pdf files...>
Options:
   -q: be quiet (default is to be verbose)
   -h: show help (this) and quit

EOF
}

function verb
{
   [ "$VERBOSE" = "yes" ] && echo $*
}

while getopts 'qh' opt; do
   case $opt in
     q) VERBOSE= ;; # be quiet
     h) help; exit 0;; # display help and quit
     *) echo "ERROR: unknown option $opt" >&2; exit 1;;
   esac
done
shift $(( $OPTIND - 1 ))

# Check whether at least 1 file has been given as parameter
if [ $# -le 0 ]; then
   echo "Please specify one or more PDF file(s) as argument(s)" >&2
   exit 1
fi

# Signal handler function (terminates)
function sig_handler
{
   rm -f "$tmpfile"
   verb "Interrupted by signal." >&2
   exit 1
}

# Register signal handler function:
trap sig_handler SIGINT SIGQUIT SIGTERM

# Process PDF files
for pdf in $*; do

   verb -n "Processing $pdf... "

   # Make a copy of the original PDF, but don't
   # overwrite an existing original
   [ ! -f "${pdf}.orig" ] && mv "$pdf" "${pdf}.orig"

   # Do the actual processing:
   if pdf2ps "${pdf}.orig" "$tmpfile" \
      && psselect -q -p-_2 "$tmpfile" \
         | ps2pdf13 - "$pdf"
   then
     # Succeeded
     verb "ok"
   else
     # Failed
     verb "ERROR" >&2
     echo "ERROR in processing \"$pdf\"" >&2

     # Restore the original PDF file
     mv "${pdf}.orig" "$pdf"
   fi

done

# Remove the temporary file
rm -f "$tmpfile"

- - - -/snip - - - - - - - - - - - - - - - - - - - - - - - - - - -

Voil� msieu ;-)

PS: je viens de l'�crire, le script n'est pas test�, je n'ai fait les
     �tapes qu'� la main (l� �a marche ;-)), donc essaie quand m�me avec
     un seul fichier pour voir si �a marche correctement ;-)

-- 
   -o) Pascal Bleser   ATOS Origin/Aachen(DE) |
   /\\         <[EMAIL PROTECTED]> |
  _\_v <[EMAIL PROTECTED]>                     |
---------------------------------------------|
Jesus saves,Buddha makes incremental backups :
---------------------------------------------'


_______________________________________________________
Linux Mailing List - http://www.unixtech.be
Subscribe/Unsubscribe: http://www.unixtech.be/mailman/listinfo/linux
Archives: http://www.mail-archive.com/[email protected]
IRC: efnet.skynet.be:6667 - #unixtech

Répondre à