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.