Fusion PDF par lots

Peut-être qu'en installant "Python" dans Monterey cela fonctionnerait.
Si apple ne l'installe plus d'office par défaut, mais que dans automator l'action combiner PDF continue de faire appel à Python, alors une installation devrait résoudre le problème ... A tester !
 
Loupé, même en installant Python ça ne fonctionne pas. En revanche, Automator précise bien au début que l'action "Combiner pdf" peut ne pas fonctionner correctement (puisqu'il a été créé avec une version antérieure)...
 
Si tu refais le script automator avec les pavés issus du système monterey (si cette action est toujours disponible dans le système)? comme suggéré par @ungars
Sinon reste plus qu'a avoir un système ancien, ou faire le boulot avec "adobe acrobat pro" ou en ligne ...

Suivant le nombre (volume) de fichiers à traiter n'est pas trop important et, si tu es coincé, tu me zip le tout et je te le fait sur mon vieux système "Mojave"
 
Tu peux également essayer le logiciel "PDF sam Basic" gratuit a télécharger là:

Il faudra bien sur travailler dossier par dossier ...
 
J'ai essayé en remettant "Combiner pdf" avec Monterey, pareil... :eek:
J'ai plus de 520 dossiers, j'me vois mal me cogner dossier par dossier. Bizarre cette histoire de Python, ou de process toujours dispo mais qui ne fonctionne plus avec une MAJ.
Pas possible de se passer d'Automator? (même si je me doute de la réponse). Sinon oui avec une solution logicielle mais qui sache aller chercher dans chaque dossier, sinon ça reviendrait au même que de le faire manuellement...
 
Tu peux pas t'installer un ancien système ?(si tu as une bécane qui supporte)

sinon comme proposé, tu me zip tes dossiers et je te fais çà !
 
Pas d’autre machine pour installer une ancienne version.
C’est très gentil de proposer mais je ne peux pas diffuser ces documents (confidentiels)…
C’est bien parti pour tout me faire à la main! Si j’avais su j’aurais pas fait la Maj rien que pour ça !! :p
 
Désolé pour toi ... :bigtears:
Si je trouve une solution je ne manquerai pas de t'en faire sur ce post ! :)
 
Bonjour,

As-tu essayé de te servir du script du message #5, qui était très long, pour vérifier si lui fonctionne, fais un essai sur un petit nombre de fichiers ;)
 
Bonjour,

J'ai continué à chercher ! et je t'ai fait un nouvel applescript à tester...
Il n'utilise pas automator ni python...

Comme d'habitude tu exécutes le script il te demande de choisir le dossier, il combine les pdf par dossier et enregistre le résultat dans chaque dossier avec le nom combine.pdf. A la fin il met un message comme quoi il a terminé.

Un petit impératif, les dossiers ne doivent contenir que des pdf sinon ce dossier est ignoré ...

J'espère qu'il fonctionnera chez toi , chez moi sur Mojave çà fonctionne.

J'attends le résultat de tes essais...

Bloc de code:
use scripting additions
use framework "Foundation"
use framework "Quartz" -- required for PDF stuff
property inFolderPosix : ""
property destPosixPath : ""

tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à traiter"
   
    my inspecter(chemin)
end tell

on inspecter(chemin)
    tell application "Finder"
        set inFolderPosix to POSIX path of chemin as text
        set destPosixPath to POSIX path of chemin & "Combine.pdf" as text
    end tell
   
   
    its combineFilesIn:inFolderPosix savingTo:destPosixPath
   
    tell application "Finder"
        set chemin to chemin as alias
        set les_dossiers to folders of chemin
        repeat with chaque_dossier in les_dossiers
            set chaque_dossier to chaque_dossier as alias
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

on combineFilesIn:inFolderPosix savingTo:destPosixPath
   
    try
        set dirURL to current application's class "NSURL"'s fileURLWithPath:inFolderPosix
        set theURLs to current application's NSFileManager's defaultManager()'s contentsOfDirectoryAtURL:dirURL includingPropertiesForKeys:{} options:(current application's NSDirectoryEnumerationSkipsHiddenFiles) |error|:(missing value)
       
        set theDoc to current application's PDFDocument's alloc()'s initWithURL:(theURLs's firstObject())
       
        set oldDocCount to theDoc's pageCount()
        repeat with i from 1 to ((theURLs's |count|()) - 1)
           
            set newDoc to (current application's PDFDocument's alloc()'s initWithURL:(theURLs's objectAtIndex:i))
            -- loop through, moving pages
            set newDocCount to newDoc's pageCount()
            repeat with i from 1 to newDocCount
               
                set thePDFPage to (newDoc's pageAtIndex:(i - 1)) -- zero-based indexes
               
                (theDoc's insertPage:thePDFPage atIndex:oldDocCount)
                set oldDocCount to oldDocCount + 1
            end repeat
        end repeat
        set outNSURL to current application's class "NSURL"'s fileURLWithPath:destPosixPath
       
        (theDoc's writeToURL:outNSURL)
    end try
end combineFilesIn:savingTo:
 
Dernière édition:
Super ça marche!! :D
Ca a l'air long, mais bon, le principal c'est que ça fonctionne! Pas grave si il ignore les dossiers contenant autre chose que du pdf (normalement j'en ai pas j'avais vérifié).
C'est super, j'me le garde au chaud ce script!
Merci beaucoup à toi pour ton temps et ton travail! ;)
 
Content pour toi !
:up: :coucou:
 
Bonsoir,

Vu que cela fonctionne je t'ai ajouté une fonction.

Le script crée un fichier texte "erreur.txt" sur le bureau, ce fichier contient la liste des dossiers qui n'ont pas été traité, soit parce qu'il sont vide soit parce qu'il contienne un fichier pas pdf ou impossible à traiter.

Il y a un dossier non traité par ligne.

Bloc de code:
use scripting additions
use framework "Foundation"
use framework "Quartz" -- required for PDF stuff
property inFolderPosix : ""
property destPosixPath : ""
property doserreur : ""

tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à traiter"
    
    my inspecter(chemin)
end tell

on inspecter(chemin)
    tell application "Finder"
        set inFolderPosix to POSIX path of chemin as text
        set destPosixPath to POSIX path of chemin & "Combine.pdf" as text
    end tell
    set doserreur to inFolderPosix
    
    its combineFilesIn:inFolderPosix savingTo:destPosixPath
    
    tell application "Finder"
        set chemin to chemin as alias
        set les_dossiers to folders of chemin
        repeat with chaque_dossier in les_dossiers
            set chaque_dossier to chaque_dossier as alias
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter

tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

on combineFilesIn:inFolderPosix savingTo:destPosixPath
    
    try
        set dirURL to current application's class "NSURL"'s fileURLWithPath:inFolderPosix
        set theURLs to current application's NSFileManager's defaultManager()'s contentsOfDirectoryAtURL:dirURL includingPropertiesForKeys:{} options:(current application's NSDirectoryEnumerationSkipsHiddenFiles) |error|:(missing value)
        
        set theDoc to current application's PDFDocument's alloc()'s initWithURL:(theURLs's firstObject())
        
        set oldDocCount to theDoc's pageCount()
        repeat with i from 1 to ((theURLs's |count|()) - 1)
            
            set newDoc to (current application's PDFDocument's alloc()'s initWithURL:(theURLs's objectAtIndex:i))
            -- loop through, moving pages
            set newDocCount to newDoc's pageCount()
            repeat with i from 1 to newDocCount
                
                set thePDFPage to (newDoc's pageAtIndex:(i - 1)) -- zero-based indexes
                
                (theDoc's insertPage:thePDFPage atIndex:oldDocCount)
                set oldDocCount to oldDocCount + 1
            end repeat
        end repeat
        set outNSURL to current application's class "NSURL"'s fileURLWithPath:destPosixPath
        
        (theDoc's writeToURL:outNSURL)
    on error
        set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
        write "Le dossier : " & doserreur & "     ne sera pas traité !" & return to lelog starting at eof
        close access lelog
    end try
end combineFilesIn:savingTo: