Script seqeps2pdf

seqeps2pdf est un script bash (linux) qui s'appuie sur epstopdf et pdftk pour assembler une séquence d'images, au format EPS, en un fichier PDF. Les fichiers de la séquence sont supposés être nommé selon la syntaxe prefixe*[0-9].eps, de prefixe0.eps à prefixeN.eps.

Un usage

Animation flash

L'animation ci-dessus est contruite à partir de wavepacket.asy, une des animations de la distribution d'asymptote. La dernière ligne à été modifiée, l'argument keep=true est passé à A.movie de façon à conserver les fichiers EPS générés.

$> asy wavepacket.asy

Puis:

$> seqeps2pdf wavepacket

On dispose alors de wavepacket.pdf. Sur quelques compilations j'ai observé que la taille du fichier PDF obtenu par cette méthode était moins importante que celle obtenue en passant l'option -f pdf à asy.

Il reste à construire l'animation SWF...

$> pdf2swf wavepacket.pdf -o temp.swf
$> swfcombine -dz -r 10 temp.swf -o wavepacket.swf; rm temp.swf

Vous trouverez d'autres animations construites selon la méthode précédente à la page animations de la rubrique asymptote.

Le source

#!/bin/bash
# ----------------------------------------------------------------------
#                          seqeps2pdf
# Transformation d'une séquence d'images au format EPS en un fichier PDF.
# ----------------------------------------------------------------------
# Jean-Michel Sarlat, Janvier 2008
#                                        http://melusine.eu.org/syracuse
# ----------------------------------------------------------------------

### Utilisation de epstopdf et pdftk.
if ! which epstopdf >/dev/null ; then
    echo "epstopdf est absent !"
    exit 1
fi
if ! which pdftk > /dev/null ; then
    echo "pdftk est absent !"
    exit 1
fi

### Préfixe du fichier, s'il y a une extension elle est supprimée.
prefixe=${1%.*}
if ! [ -n "$prefixe" ]; then
    echo "Le préfixe des fichiers à traiter est manquant !"
    exit 2
fi

### Décompte des figures.
NB=$(ls $prefixe*[0-9].eps | wc -l)
if [ $NB -lt 1 ]; then
    echo "Il n'existe pas de figures eps correspondant au préfixe donné !"
    exit 3
fi

### Transformation des figures et liste ordonnée des figures...
FIGS=
I=0
while [ $I -lt $NB ]; do
 epstopdf $prefixe$I.eps
 FIGS="$FIGS $prefixe$I.pdf"
 let I=I+1
done

### Assemblage par pdftk.
pdftk $FIGS cat output $prefixe.pdf

### Nettoyage.
rm -f $prefixe*[0-9].pdf