Importation de PDF dans Pages

zeltron54

Membre d’élite
29 Mars 2008
2 145
335
Lorraine
Bonjour,
@sveireman

Je viens de tester chez moi , aucun problème, pas de double page... et cela fonctionne avec un PDF dont le nom a 2 caractères.

Pour utiliser ce script il faut

- Créer un nouveau document Automator Processus, dans lequel on crée 4 actions:

Action 1 : Obtenir les éléments sélectionnés du finder
Action 2 : Scinder le PDF et dans "enregistrer la sortir dans", choisir un dossier VIDE créé pour ce besoin (dossier sans titre sur le bureau par exemple)
Action 3 : Obtenir les éléments sélectionnés du finder
Action 4 : Exécuter un script Applescript, dans cette fenêtre effacer tout le contenu et y coller le script du message #19.

On sélectionne le PDF à traiter et on clique sur la flèche exécuter en haut à droite de la fenêtre Automator.

Le script s'exécute puis demande d'enregistrer le document page obtenu.

Dis moi si cela fonctionne.

Edit: je précise que je suis sur OS Mojave, mais cela devrait fonctionner avec tous les OS.
 

sveireman

Membre junior
1 Février 2006
88
2
Belgique
Bonsoir,

Merci pour votre retour rapide.
J'ai compris mon erreur. J'avais créé une Action Rapide et non un Processus dans Automator. Ce qui provoque un plantage.
Par contre, j'ai constaté que la première page du PDF se retrouvait en double à la fin du document Pages.

N'y aurait-il pas la possibilité d'en faire une Action Rapide ?

J'utilise macOS Big Sur...
 
Dernière édition par un modérateur:

zeltron54

Membre d’élite
29 Mars 2008
2 145
335
Lorraine
Bonjour,

Pour en faire une action rapide, les actions deviennent :

Capture d’écran 2021-05-07 à 08.09.50.png


Le script applescript ne change pas.
Enregistrer cette action, (elle s'enregistre dans le dossier "services" de la bibliothèque utilisateur)

Pour l'utiliser :
Ne pas oublier de créer un dossier "dossier sans titre" Vide sur le bureau
Un clic droit sur le pdf à traiter --> services et choisir l'action à la fin enregistrer le fichier pages obtenu.
 
Dernière édition par un modérateur:

zeltron54

Membre d’élite
29 Mars 2008
2 145
335
Lorraine
Bonjour,

Je t'ai préparé une autre version "action" qui crée un dossier provisoire "provisoireaeffacer" sur le bureau (afin d'éviter d'avoir à le créer), puis qui fait le job, te demande d'enregistrer le fichier pages obtenu, et met le dossier provisoire dans la corbeille (sans la vider !)

voila la copie d'écran automator et le script applescript à mettre dedans, ne pas oublier de créer la variable "chemin" ainsi que le nom du dossier à créer (dans mon exemple "provisoireaeffacer".
Dis moi si problème !
Capture d’écran 2021-05-07 à 15.54.14.png


le script:
Bloc de code:
on run {input, parameters}
    tell application "Finder"
        set chemin to input
        set lefichier to item 1 of chemin
        set mondossier to container of lefichier as alias
        set FolderContents to files of folder mondossier
        repeat with thisFile in FolderContents
            set extens to thisFile
            set lextension to name extension of extens
            set thisFilesName to name of thisFile
            set sauv to AppleScript's text item delimiters
            set AppleScript's text item delimiters to {"."}
            set elements to text items of thisFilesName
            set nomcourt to (items 1 thru -2 of elements) as string
            set ancien_nom to nomcourt
            set AppleScript's text item delimiters to sauv
            set long to length of ancien_nom
            set i to length of ancien_nom
            repeat while character i of ancien_nom is not "e"
                set i to i - 1
            end repeat
            set zero to text -3 thru -1 of ("000" & text -(long - i) thru -1 of ancien_nom)
            set newname to text 1 thru i of ancien_nom & zero
            set nouveau_nom to newname & "." & lextension
            set name of thisFile to nouveau_nom
        end repeat
    end tell
  
    tell application "Pages"
        activate
        set templateName to "vierge"
        set templateWidth to 600
        set templateHeight to 800
        set defaultMargin to 50
        set textItemInset to 30
        set defaultTypeFace to "Verdana"
        set defaultTypeSize to 10
        tell application "Finder"
            set theseImages to files of folder mondossier
        end tell
        set thisDocument to make new document with properties {document template:template templateName}
        tell thisDocument
            set locked of every iWork item to false
            delete every iWork item
            repeat with i from 1 to the count of theseImages
                set thisImageFile to item i of theseImages as alias
                if i is not 1 then make new page
                tell page i
                    set thisImage to make new image with properties {file:thisImageFile}
                    tell thisImage
                        copy {width of it, height of it} to {imageWidth, imageHieght}
                        set its width to (templateWidth - (defaultMargin * 2))
                        copy {width of it, height of it} to {imageWidth, imageHieght}
                        set its position to {(templateWidth - imageWidth) div 2, (templateHeight - imageHieght) div 2}
                    end tell
                end tell
            end repeat
        end tell
      
        tell application "Finder"
            set aa to mondossier as string
                delete aa
            --empty trash
        end tell
      
        save front document
        quit
    end tell
    return input
end run
 
Dernière édition:

sveireman

Membre junior
1 Février 2006
88
2
Belgique
Bonjour,

Je t'ai préparé une autre version "action" qui crée un dossier provisoire "provisoireaeffacer" sur le bureau (afin d'éviter d'avoir à le créer), puis qui fait le job, te demande d'enregistrer le fichier pages obtenu, et met le dossier provisoire dans la corbeille (sans la vider !)

voila la copie d'écran automator et le script applescript à mettre dedans, ne pas oublier de créer la variable "chemin" ainsi que le nom du dossier à créer (dans mon exemple "provisoireaeffacer".
Dis moi si problème !
Voir la pièce jointe 225437

le script:
Bloc de code:
on run {input, parameters}
    tell application "Finder"
        set chemin to input
        set lefichier to item 1 of chemin
        set mondossier to container of lefichier as alias
        set FolderContents to files of folder mondossier
        repeat with thisFile in FolderContents
            set extens to thisFile
            set lextension to name extension of extens
            set thisFilesName to name of thisFile
            set sauv to AppleScript's text item delimiters
            set AppleScript's text item delimiters to {"."}
            set elements to text items of thisFilesName
            set nomcourt to (items 1 thru -2 of elements) as string
            set ancien_nom to nomcourt
            set AppleScript's text item delimiters to sauv
            set long to length of ancien_nom
            set i to length of ancien_nom
            repeat while character i of ancien_nom is not "e"
                set i to i - 1
            end repeat
            set zero to text -3 thru -1 of ("000" & text -(long - i) thru -1 of ancien_nom)
            set newname to text 1 thru i of ancien_nom & zero
            set nouveau_nom to newname & "." & lextension
            set name of thisFile to nouveau_nom
        end repeat
    end tell
 
    tell application "Pages"
        activate
        set templateName to "vierge"
        set templateWidth to 600
        set templateHeight to 800
        set defaultMargin to 50
        set textItemInset to 30
        set defaultTypeFace to "Verdana"
        set defaultTypeSize to 10
        tell application "Finder"
            set theseImages to files of folder mondossier
        end tell
        set thisDocument to make new document with properties {document template:template templateName}
        tell thisDocument
            set locked of every iWork item to false
            delete every iWork item
            repeat with i from 1 to the count of theseImages
                set thisImageFile to item i of theseImages as alias
                if i is not 1 then make new page
                tell page i
                    set thisImage to make new image with properties {file:thisImageFile}
                    tell thisImage
                        copy {width of it, height of it} to {imageWidth, imageHieght}
                        set its width to (templateWidth - (defaultMargin * 2))
                        copy {width of it, height of it} to {imageWidth, imageHieght}
                        set its position to {(templateWidth - imageWidth) div 2, (templateHeight - imageHieght) div 2}
                    end tell
                end tell
            end repeat
        end tell
     
        tell application "Finder"
            set aa to mondossier as string
                delete aa
            --empty trash
        end tell
     
        save front document
        quit
    end tell
    return input
end run
Bonjour,

Je viens de tester. C'est super ! Ça fonctionne parfaitement. Il n'y a plus de doublon. J'ai changé le nom du template Pages et adapté les dimensions du PDF pour qu'il remplisse complètement la page.

Seul le dossier "provisoireaeffacer" ne s'efface pas en fin de processus. Ce n'est pas un problème du tout.

Encore mille mercis pour cette aide précieuse qui me fait gagner du temps.

AppleScript m'intéresse beaucoup. Je vais essayer d'apprendre le langage. Si vous avez de conseils pour l'étudier...

Un bon week-end.
 

zeltron54

Membre d’élite
29 Mars 2008
2 145
335
Lorraine
Bonjour,

Le dossier "provisoireaeffacer" ne se met pas à la corbeille en fin de traitement ?

EDIT: tu as bien mis le script applescript du dernier post celui du #24, il a été modifié pour ça...
la partie:
Bloc de code:
tell application "Finder"
            set aa to mondossier as string
            set lesfichiers to files of folder mondossier
            repeat with lefichier in lesfichiers
                set a to lefichier as string
                delete lefichier
            end repeat
            empty trash
        end tell

A été remplacée par :

Bloc de code:
tell application "Finder"
            set aa to mondossier as string
                delete aa
            --empty trash
        end tell

Dans ce code les -- devant empty trash sont là pour ne pas vider la corbeille , si tu veux la vider supprimes les --
 
Dernière édition:

sveireman

Membre junior
1 Février 2006
88
2
Belgique
Bonjour,

J'ai bien remplacé le code par le dernier que vous m'avez donné. J'ai même constaté que les fichiers PDF s'accumulaient dans le dossier "provisoireaeffacer" au fur et à mesure de l'utilisation du Processus. Ce n'est vraiment pas une contrainte à l'usage. L'essentiel fonctionne parfaitement selon mes essais actuels.

Encore merci.
 
Dernière édition par un modérateur:

zeltron54

Membre d’élite
29 Mars 2008
2 145
335
Lorraine
Bonjour,
Alors je ne comprend pas pourquoi ce dossier ne se met pas à la corbeille !

Pense à le mettre à la corbeille à la main sinon tu risques d'avoir un fichier pages avec la totalité du contenu de ce dossier avec l'accumulation des fichiers.

C'est quand même curieux ! car chez moi cela fonctionne ... ;)