AppleScript/Automator combiner plusieurs PDF dont le nom...

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Si tu tiens absolument à avoir un suivi de l'avancement de la tache, on peut ouvrir une fenêtre texte (dans textedit) qui te donne le numéro du fichier en traitement sur un total de ...
Je trouve pas très jolie, mais cela peut fonctionner.
Dis moi si ça t' intéresses et dans quel fichier je dois l'intégrer (sur le droplet ou sur le service )?

J' attends ton choix...
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Cool, ça fonctionne super bien depuis le menu actions rapides :D
Très pratique.

Sinon, j'ai remplacé
Bloc de code:
    tell application "Finder"
        (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
    end tell
par
Bloc de code:
    display notification "Fin de la fusion des PDF élèves du chapitre sélectionné." with title "Fusion PDF Cours Élèves"
Je préfère la notification plutôt que la boite de dialogue où il faut cliquer ^^

Du coup, il y a moyen de récupérer le nombre de fichier à fusionner ?
Pour afficher une notification avant la fusion d'un fichier qui dit par exemple : Fusion du fichier n°1 / 5.

Le fichier textedit c'est effectivement pas terrible ;) je préfère éviter ^^


Ha tiens, en faisant une petite recherche google j'ai vu ça :
https://developer.apple.com/library....html#//apple_ref/doc/uid/TP40016239-CH37-SW1
Y a moyen d'intégrer ça ? (j'ai pas tout compris encore :oops::p)
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Bonsoir,
le lien que tu donnes ajoute un petit camembert le le nombre de traitement sur le nombre total dans la petite barre en bas de la fenêtre de l'éditeur de script, donc aucun intérêt pour ton cas...

L'ajout d'une notification à chaque traitement de fichier peut être une solution, mais la notification s'inscrit dans le volet mais ne s'affiche pas à l'extérieur du volet. Pour suivre l 'avancement il faut déployer le volet et là on voit les notifications s'inscrire.
je te met le fichier à coller dans automator, pour créer un service.
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Le fichier pour service
Bloc de code:
on run {input, parameters}
  
    set chemin to input as alias
    tell application "Finder"
        make new folder at ((path to home folder) as string) with properties {name:"compilation"}
        make new folder at ((path to home folder) & "compilation" as string) with properties {name:"la_selection"}
        set chemin_compilation to ((path to home folder) & "compilation:") as string
        set chemin_selection to ((path to home folder) & "compilation:la_selection:") as string
        set chemin_pageblanche to ((path to home folder) & "pageblanche.pdf") as string
      
        set les_fichiers to files of chemin
        set total to 0
        repeat with chaque_fichier in les_fichiers
            set nom to name of chaque_fichier as string
          
            if nom contains "eleve" and nom contains ".pdf" then
              
                if nom contains "ACTIVITES - ELEVES - Chapitre Complet.pdf" then
                  
                else
                    duplicate chaque_fichier to chemin_selection
                    set total to total + 1
                end if
            end if
        end repeat
      
        set la_selection to chemin_selection as alias
        set les_fichiers to files of la_selection
        set letotal to total as string
        set compteur to 0
        repeat with le_fichier in les_fichiers
            set nom to name of le_fichier
            set compteur to compteur + 1
            set letotal to total as string
            set lecompteur to compteur as string
            display notification "fusion PDF fichier " & lecompteur & "/" & letotal with title "Fusion PDF Cours Élèves"
            if not (exists chemin_compilation & "la_compilation.pdf") then
                duplicate le_fichier to chemin_compilation
                set anciennom to chemin_compilation & nom as alias
                set name of anciennom to "la_compilation.pdf"
              
            else
              
                duplicate le_fichier to chemin_compilation
                set anciennom to chemin_compilation & nom as alias
                set name of anciennom to "suite.pdf"
              
                set fich to ((path to home folder) & "compilation:la_compilation.pdf") as string
                set fich to quoted form of POSIX path of fich
              
                set NP to do shell script "/usr/local/bin/exiftool -pagecount " & fich
                set NP to word 3 of NP
                if NP mod 2 is not 0 then
                  
                    set leblanc to chemin_pageblanche as string
                    set leblanc to quoted form of POSIX path of leblanc
                    set nouveau to ((path to home folder) & "compilation:nouveau.pdf") as string
                    set nouveau1 to quoted form of POSIX path of nouveau
                    set lenew to fich & " " & leblanc
                  
                    do shell script "'/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py' --output " & nouveau1 & space & lenew
                    do shell script "rm " & fich
                    set nouveau to nouveau as alias
                    set name of nouveau to "la_compilation.pdf"
                end if
              
                set le2 to ((path to home folder) & "compilation:suite.pdf") as string
                set le2 to quoted form of POSIX path of le2
                set nouveau to ((path to home folder) & "compilation:nouveau.pdf") as string
                set nouveau1 to quoted form of POSIX path of nouveau
                set lenew to fich & " " & le2
              
                do shell script "'/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py' --output " & nouveau1 & space & lenew
                do shell script "rm " & fich
                do shell script "rm " & le2
                set nouveau to nouveau as alias
                set name of nouveau to "la_compilation.pdf"
              
            end if
          
        end repeat
        set fich to ((path to home folder) & "compilation:la_compilation.pdf") as string
        set Chapitre to word 1 of nom
        set renom to (Chapitre & " - ACTIVITES - ELEVES - Chapitre Complet.pdf") as string
        set fich to fich as alias
        set name of fich to renom
        set fich to ((path to home folder) & "compilation:" & renom) as string
        set fich to fich as alias
        move fich to chemin with replacing
        set efface to ((path to home folder) & "compilation:") as string
        set efface to quoted form of POSIX path of efface
        do shell script "rm -Rf " & efface
      
    end tell
  
    display notification "Fin de la fusion des PDF élèves du chapitre sélectionné." with title "Fusion PDF Cours Élèves"
    return input
end run
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Pour la notification, elle apparait sur le bureau puis disparait toute seul ;)
upload_2019-9-11_20-35-49.png

Je teste le nouveau script ^^
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Tout semble bien fonctionner ;)
Merci bien :):merci:
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
content pour toi.
bonne soirée.
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Bonne soirée à toi également :up:
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Bonjour,

A force de chercher , j'ai fini par trouver un truc pour avoir une barre de progression.
Il faut mettre l'application "SKProgressBar" sur ta machine (ou tu veux) et j'ai modifier le script pour qu'il utilise cette application.
Je t'envoie un fichier . zip qui contient:
- l'application SKProgressBar
- le script sous la forme d'un fichier service du nom de "fusion pdf barre" à copier coller dans le dossier users --> Ton_nom --> bibliothèque --> service
le lien : http://dl.free.fr/mVmUW1MHs

Bon test, j'attends ton retour.
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Je teste ça quand je suis rentré chez moi.
Merci encore :merci:
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Le positionnement de la barre sur l'écran est défini dans le script en pixel en partant du bas à gauche.
pour moi je l'ai positionnée au milieu de mon écran la ligne est:
set position to {1000, 750}
Tu pourras changer cela en fonction de ton écran et de l'endroit ou tu veux la voir apparaître.

Dans le script j' incrémente l'avancement juste avant de traiter le fichier, donc la barre arrive au bout juste avant la dernière fusion...
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Hello,
J'ai pu tester la version avec progressbar.
Ça fonctionne bien ;) mais j'ai l'impression que c'est plus lent que la version avec notifications.
Je pense rester sur la version notifications du coup ^^

Merci bien en tout cas ;)
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Ok pas de problème, celà m'a permis de découvrir ce petit programme ....

Si problème ou modification à apporter n'hésite pas...

Bonne soirée ! :coucou:
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Hello,
Je viens de rencontrer un petit soucis, pas grand chose hein ;) les pdf sont bien fusionnés :)
Mais là j'ai eu un chapitre avec 10 activités : Act.n°0, Act.n°1 , Act.n°2 ... Act.n°9, Act.n°10.
Et bien j'ai pas vérifier le travail du script, mais là j'ai la n°10 qui est venue s'intercaler entre la n°1 et la n°2 :rolleyes::angelic::eek:
Bref, c'est pas terrible... et j'ai vu cela une fois que j'avais 10 exemplaires sortis à la photocopieuse :D
Bon c'est pas grave pour cette impression, mais est-ce qu'il y aurait pas moyen de faire en sorte que le script passe l'activité n°10 après la n°9 ?
(je ne devrais pas avoir plus que 10 ou 11 activités...)
Mais faut pas forcément placer la n°10 à la fin, car à la fin j'ai un pdf de Bilan et après j'ai une fiche d'exercices :rolleyes::D

Si c'est pas possible, je verrais pour fusionner autrement quand j'aurais plus de 9 activités, genre à la main comme avant ;)

Merci d'avance,
Miles
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
C'est normal le tri se fait par ordre alphabétique donc pour le avoir dans l'ordre il faut nommer les activités en : 01, 02, 03 .....10,11 ... avec 2 caractères tu seras bon jusqu'à 99.

Si cela n'est pas très fréquent tu peux renommer à la main , ou alors il faut essayer d'intégrer un renommage dans le script...
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Pourtant le finder les affiche bien dans le bon ordre :rolleyes:
Bon comme tu le dis, ce n'est pas très fréquent, je vais nommer avec 01, 02, 03 etc... comme pas plus de soucis ;)
(va falloir que je prenne l'habitude de le faire sur mes prochains chapitres :eek: ou plutôt sur ceux qui dépassent 9 activités ;))

Merci :up:
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
Dans le script il faudrait donc faire une recherche de la chaine act.n° et la remplacer par act.n°0

Je peux regarder ça , si ça t'intéresse ?
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
Non c'est bon, ne t'embête pas, je nommerai les fichiers avec des 0 ce sera plus simple ^^
 

zeltron54

Membre d’élite
29 Mars 2008
1 754
262
Lorraine
OK! bonne journée...
 

MilesTEG

Membre confirmé
29 Octobre 2007
263
14
38
13 fichiers en fusion, c'est pas rapide, mais je comprends pourquoi en regardant la taille : 22 Mo :eek::rolleyes:
Purée, c'est pour ça que le photocopieur a mis un temps pas négligeable a me sortir le 1er exemplaire du poly :D