[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

script bash pour pdf et xpdf


From plaunay1 <pierre dot launay at ac-rennes dot fr>
Subject script bash pour pdf et xpdf
Date Mon, 04 Jun 2007 22:28:41 +0200

Bonjour,

Voici un petit script bash pour accéder à une page d'un composant (datasheeets) dans une documentation constructeur (databook)
Ce script peut servir à d'autres, allez directement à la bonne partition dans une collection de partition enregistrée en pdf pour les musiciens...


Il faut récupérer la liste des composants (index) pour chaque pdf avec
pdftotext -f (début page index) -l (fin page index) fichier.pdf fichier.txt
Plus d'infos, lire man pdftotext
Il faut ajouter une première ligne et mettre le décalage de pages
Exemple: il y a 8 pages i ii ... et première page la page 1 commence en fait à 9, mettre 8


Le script affiche_page_pdf.sh
#!/bin/bash
#affiche page pdf
exec 6<&0 # Lie le descripteur de fichier #6 avec stdin. Sauvegarde stdin.
grep -i $1 *.txt |while read ligne #lecture résultat grep ligne par ligne
do #une ligne : fichier.txt(ft):référence composants [commentaires] numéro de page
ft=${ligne%:*} #nom fichier texte
fichier=${ft:0:${#ft}-3}pdf #nom fichier pdf
decal=$(head -n1 $ft) #décalage : les pages i, ii ne sont pas comptés
b=${ligne% *} #recherche dernier espace avant numéro
num=$((${ligne:${#b}}+$decal)) #numéro page + décalage
echo ${ligne:${#ft}:${#b}-${#ft}} #affiche référence composants et commentaires s'ils existent
echo xpdf $fichier $num "&" #xpdf nom fichier pdf et numéro page et rend la main
exec 5<&0 # Lie le descripteur de fichier #5 avec grep. Sauvegarde grep.
exec 0<&6 6<&- # Maintenant, restaure stdin à partir de fd #6, où il a été sauvegardé,
#+ et ferme fd #6 ( 6<&- ) afin qu'il soit libre pour d'autres processus.
echo "Visualisez le pdf ? (o)" #demande visualisation
read clavier #lire le clavier pas la réponse du grep
if [ "$clavier" = "o" ] #test si autorisation affichage
then xpdf $fichier $num & #afficher la page du pdf et rend la main
fi
exec 6<&0 # Lie le descripteur de fichier #6 avec stdin. Sauvegarde stdin.
exec 0<&5 5<&- # Maintenant, restaure grep à partir de fd #5, où il a été sauvegardé,
#+ et ferme fd #5 ( 5<&- ) afin qu'il soit libre pour d'autres processus.
done


Si vous avez plus simple pour passer la main entre stdin et le tube avec grep, je suis preneur.

Encore merci à JPG et ses cours bash

Pierre