Importation de PDF dans Pages

Julien_F

Membre confirmé
20 Juillet 2004
27
0
Lyon, France
Bonjour à tous,

Je cherche à importer des fichiers PDF dans Pages, en tant qu'images. Il s'agit de document multi-pages, et je voudrais que chaque page du PDF deviennent une image sur une page dans Pages. Cela me permettrait d'ajouter par dessus des commentaires, figures, images, équations… Ce que l'on ne peut pas faire facilement directement sur un PDF!
Le simple glisser-déposer dans Pages ne met qu'une image de la première page du PDF…

Quelqu'un aurait une idée de comment procéder?
merci d'avance de votre aide!
 
Si tu fais de la bureautique(*), tu peux ouvrir ton PDF avec Aperçu, afficher la barre latérale pour voir les vignettes de pages puis les glisser-déposer dans Pages.
Il faut toutefois procéder une page à la fois (et avoir préalablement créé suffisamment de pages vierges dans Pages).

P.S. Les pages ne sont pas importées comme images mais comme documents PDF. Le texte reste sélectionnable.
J'imagine que ce n'est pas un problème ?
_
(*) Aperçu est notoirement connu pour ne pas traiter convenablement les PDF en vue d'une impression professionnelle — et pour quelques autres raisons aussi mais qui ne devraient pas intervenir ici. ;)
 
Merci pour ce retour!
Oui, j'avais identifié cette manière de procéder, en glissant chaque page du PDF dans Pages. Mais il y a une quarantaine de PDF d'une vingtaine de pages à transférer (ça ressemble à un paquet de copies scannées, vive la continuité pédagogique ;-), j'espérais trouver une méthode un peu plus automatique...
Je n'avais pas vu que le texte restait sélectionnable, c'est bon à savoir! Ça ne me pose pas de soucis, de toutes façons pour ce qui me préoccupe pour le moment, ce sont des scans, donc pas de texte!
 
Libre Office ne se débrouille pas mal non plus avec les PDF.
Peut-être ouvrir avec LO puis réenregistrer en .docx pour réouvrir dans Pages ? (Non testé.)
 
Bonjour,
La solution est de passer par l'application TextEdit. (fournie avec le mac)

  • Tu ouvres TextEdit
  • Tu t'assures qu'il soit au format RTF (voir menu-->format-->convertir au format RTF)
  • Tu fais un glissé-déposé de ton fichier PDF sur la fenêtre (ton fichier s'ouvre dans textEdit page pa page)
  • Tu fais un enregistrer sous --> un nom de fichier et tu restes au format (RTF avec pièces jointes) qui est par défaut.
  • Ce nouveau fichier pourra s'ouvrir avec page et tu devrais avoir une page du PDF par page dans pages.
 
La solution est de passer par l'application TextEdit. (fournie avec le mac)
Merci zeltron54! Je n'avais pas pensé à TextEdit, en effet...

J'ai tenté ce que tu as proposé, dans TextEdit je peux effectivement faire défiler le PDF. Mais une fois ouvert dans Pages, je reviens à l'affichage uniquement de la première page...
Je remarque aussi que dans TextEdit, je ne peux rien insérer entre les pages du PDF.
Je précise que je suis sous Catalina (10.15.4), peut-être que ce comportement a été modifié depuis Mojave ? Je vais tenter ça en démarrant sous Mojave...

Reste aussi à tenter LibreOffice... Je vais installer ça et tester !

Merci de vos retours, je vous tiens au courant de ce qui marche... ou pas ! ;)
 
Dernière édition par un modérateur:
Je viens de tester avec plusieurs PDF, pour certain cela fonctionne et pas pour d'autre ???

Edit: même en analysant les fichiers Je n'ai pas trouver pourquoi un oui , l'autre non, désolé.. :bigtears:
 
Dernière édition:
Une autre solution.

Avant de faire la manip avec textEdit, découper le fichier PDF en autant de fichiers qu'il y a de pages.
Pour cela j'utilise automator. juste 2 actions. D'abord créer un dossier pour recevoir les pages pdf (dans mon exemple j'ai créé le dossier "les pages " sur le bureau :

Capture d’écran 2020-04-05 à 18.04.29.png

sélectionner le fichier PDF puis appuyer sur exécuter en haut à droite.
il suffit ensuite avec textEdit de faire un glissé déposé de tous les fichiers obtenus.
 
  • J’aime
Réactions: iDanGener
Une autre solution.

Avant de faire la manip avec textEdit, découper le fichier PDF en autant de fichiers qu'il y a de pages.
Pour cela j'utilise automator. juste 2 actions. D'abord créer un dossier pour recevoir les pages pdf (dans mon exemple j'ai créé le dossier "les pages " sur le bureau :

Voir la pièce jointe 164651

sélectionner le fichier PDF puis appuyer sur exécuter en haut à droite.
il suffit ensuite avec textEdit de faire un glissé déposé de tous les fichiers obtenus.

Pas mieux en testant sur notre Mac sous Mojave... En glissant-déposant le fichier dans TextEdit, on voit bien apparaître plusieurs pages, mais une fois enregistré en .rtfd et ouvert dans Pages, il n'y a que la première page d'affichée... Dommage!

J'ai testé avec LibreOffice: même comportement que Pages (ou Word) si je fait un glissé-déposé du fichier PDF dans un document Writer. J'ai essayé d'ouvrir le PDF depuis LibreOffice, il s'affiche bien mais quand je veux enregistrer, je n'ai que du format graphique de disponible. Echec à nouveau...

Finalement, la solution avec Automator semble encore la "moins pire":
  • Scinder chaque PDF en pages uniques avec le script proposé par @zeltron54 (Merci!)
  • glissé-déposé dans un nouveau document TextEdit de tous les fichiers d'un coup
  • sauvegarde au format RTFD
  • ouverture du fichier obtenu dans Pages pour annotation (avec équations en LaTeX, youpi!!!)

C'est pas encore très direct, mais déjà beaucoup mieux que de glisser-déposer chaque page une à une dans Pages, avec à chaque fois les ajustements de taille et de position!
 
Cette solution fonctionne !
Alors content pour toi. J’ai rien de mieux à te proposer.
 
Bonjour,

Si ça peut t'aider, j'ai fait un script à utiliser après avoir scinder le pdf, qui :
-Demande de sélectionner les fichiers à inclure (un tout sélectionner dans le dossiers des pages extraites cmd+A)
- Il ouvre pages et colle les fichiers (un sur chaque page)
il ne te reste plus qu'a enregistrer le fichier page
Je n'est pas réussi à l'incorporer dans un processus Automator :bigtears:
le script:

Bloc de code:
property templateName : "vierge"
property templateWidth : 600
property templateHeight : 800
property defaultMargin : 50
property textItemInset : 30
property defaultTypeFace : "Verdana"
property defaultTypeSize : 10

tell application "Pages"
    activate
  
    -- promput user for images
    set theseImages to (choose file with prompt "Selectionner les fichiers à inclure:" with multiple selections allowed)
  
    -- make a new page layout document
    set thisDocument to make new document with properties ¬
        {document template:template templateName}
  
    tell thisDocument
        -- delete the default template items
        set locked of every iWork item to false
        delete every iWork item
      
        ---- add the images to the document, each on its own page
        repeat with i from 1 to the count of theseImages
            set thisImageFile to item i of theseImages
            ---- extract any embedded caption metadata from the image file
            set thisImageDescription to my extractkMDItemDescription(thisImageFile)
            ---- make a new page if needed
            --if i is not 1 then make new page
            if i < (count of theseImages) + 1 then make new page
            tell current page
                ---- import the image
                set thisImage to make new image with properties {file:thisImageFile}
                ---- center the image on the page
                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
                ----if there is an image description, place over opaque background overlay
                if thisImageDescription is not "" then
                    set thisShape to make new shape with properties {width:(templateWidth - (4 * defaultMargin)), height:90, position:{(2 * defaultMargin), (templateHeight - (4 * defaultMargin))}, opacity:40}
                    tell thisShape
                        copy {width of it, height of it} to {shapeWidth, shapeHeight}
                        copy its position to {shapeHorizontalOffset, shapeVerticalOffset}
                    end tell
                    set thisTextItem to make new text item with properties {object text:thisImageDescription, width:(shapeWidth - (2 * textItemInset)), height:(shapeHeight - (2 * textItemInset)), position:{shapeHorizontalOffset + textItemInset, shapeVerticalOffset + textItemInset}}
                    tell object text of thisTextItem
                        set font to defaultTypeFace
                        set size to defaultTypeSize
                        set color of it to "white"
                    end tell
                end if
            end tell
        end repeat
    end tell
end tell

on extractkMDItemDescription(thisImageFile)
    -- use Spotlight to extract embedded metadata
    try
        set thisImagePOSIXPath to the POSIX path of thisImageFile
        set the embeddedDescription to ¬
            do shell script "mdls -name kMDItemDescription " & ¬
                (quoted form of thisImagePOSIXPath)
        if embeddedDescription is "kMDItemDescription = (null)" then
            set embeddedDescription to ""
        else
            set the embeddedDescription to ¬
                (text from ((length of "kMDItemDescription = \"") + 1) to ¬
                    -2 of embeddedDescription)
        end if
        return embeddedDescription
    on error
        return ""
    end try
end extractkMDItemDescription
 
Dernière édition:
Bonjour,
Je te remets un autre script à inclure à Automator:
A la suite des 2 actions précédentes tu ajoutes une action : "Exécuter un script applescript"
Dans la fenêtre de cette action tu effaces tout le contenu et tu colles le script ci-dessous.

A l'exécution (fichier pdf sélectionné) il te demande de sélectionner les pages à incorporer (pour tout sélectionner faire cmd-A), puis il crée le document page et te propose son enregistrement (choisi le nom et l'endroit), puis il quitte pages.

Bloc de code:
on run {input, parameters}
   
    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

        set theseImages to (choose file with prompt "Selectionner les fichiers à inclure:" with multiple selections allowed)
       
        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
       
                try
                    set thisImagePOSIXPath to the POSIX path of thisImageFile
                    set the embeddedDescription to ¬
                        do shell script "mdls -name kMDItemDescription " & ¬
                            (quoted form of thisImagePOSIXPath)
                    if embeddedDescription is "kMDItemDescription = (null)" then
                        set embeddedDescription to ""
                    else
                        set the embeddedDescription to ¬
                            (text from ((length of "kMDItemDescription = \"") + 1) to ¬
                                -2 of embeddedDescription)
                    end if
                    set thisImageDescription to embeddedDescription
   
                on error
                    return ""
                end try
           
                if i < (count of theseImages) + 1 then make new page
                tell current page
                    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
                    if thisImageDescription is not "" then
                        set thisShape to make new shape with properties {width:(templateWidth - (4 * defaultMargin)), height:90, position:{(2 * defaultMargin), (templateHeight - (4 * defaultMargin))}, opacity:40}
                        tell thisShape
                            copy {width of it, height of it} to {shapeWidth, shapeHeight}
                            copy its position to {shapeHorizontalOffset, shapeVerticalOffset}
                        end tell
                        set thisTextItem to make new text item with properties {object text:thisImageDescription, width:(shapeWidth - (2 * textItemInset)), height:(shapeHeight - (2 * textItemInset)), position:{shapeHorizontalOffset + textItemInset, shapeVerticalOffset + textItemInset}}
                        tell object text of thisTextItem
                            set font to defaultTypeFace
                            set size to defaultTypeSize
                            set color of it to "white"
                        end tell
                    end if
                end tell
            end repeat
        end tell
        save front document
        quit
    end tell
   
    return input
end run
 
Bonjour,
Je te remets un autre script à inclure à Automator:
A la suite des 2 actions précédentes tu ajoutes une action : "Exécuter un script applescript"
Dans la fenêtre de cette action tu effaces tout le contenu et tu colles le script ci-dessous.

A l'exécution (fichier pdf sélectionné) il te demande de sélectionner les pages à incorporer (pour tout sélectionner faire cmd-A), puis il crée le document page et te propose son enregistrement (choisi le nom et l'endroit), puis il quitte pages.

Bloc de code:

Désolé, trop de boulot en ce début de semaine pour tester ton script. Je viens de le faire, et c'est génial!
Merci beaucoup pour ce script, je n'aurais jamais réussi à le faire tout seul! Mais je comprends les grandes lignes de ce code, et j'ai même pu faire des petits ajustements, en me créant un modèle Pages de type "Mise en page" (pas d'en-tête, pied de page ni corps de texte), et je verrouille toutes les images créées à la fin, pour ne pas les déplacer quand j'ajoute d'autres objets. Cela me fait un document sur lequel je peux rajouter des commentaires sous forme de zones de texte, d'équation Pages (code LaTeX) ou pour les plus compliquées d'images issues de LaTeXiT (un excellent utilitaire pour créer des images à partir de code LaTeX). C'est vraiment génial!
J'ai juste remarqué qu'avec ces modifs, il y a une page blanche au début du document (il y en avait une à la fin avec le script original).

Ah, et une question naïve: ne peut-on utiliser l'entrée de l'action Applescript dans Automator, plutôt qu'afficher un dialogue de sélection de fichier? Par exemple avec:
Bloc de code:
set theseImages to input
 
Bonsoir,
J'avais essayé d'utiliser l'action pour obtenir le résultat de l'action automator, malheureusement dans ce cas il récupère les fichiers triés par ordre alphabétique, et les pages ne sont plus dans l'ordre on obtient: 1, 10, 11,......19, 2, 20, 21....etc...
Et je n'ai pas réussi à résoudre ce problème autrement qu'en récupérant les fichiers par la sélection.

Pour la page blanche en fin, je vais regarder si je peux l'éviter. :banghead:
 
Bonjour,
suite à tes remarques, j'ai modifié le script qui ne demande plus de choisir les fichiers.
Il renomme les fichiers créé par automator de "page1" en "page001" etc.. ce qui permet de garder l'ordre.

Par contre je n'ai pas encore réussi à supprimer la dernière page blanche...
le nouveau script:

EDIT: oups ! j'ai mis en ligne 3 le nom du dossier en dur "Dossier sans titre" (à modifier par toi en attendant de pouvoir récupérer le nom en direct)

Bloc de code:
on run {input, parameters}
    set chemin to (path to desktop folder) as string
    set mondossier to chemin & "dossier sans titre" as alias
    tell application "Finder"
        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

                try
                    set thisImagePOSIXPath to the POSIX path of thisImageFile
                    set the embeddedDescription to ¬
                        do shell script "mdls -name kMDItemDescription " & (quoted form of thisImagePOSIXPath)
                    if embeddedDescription is "kMDItemDescription = (null)" then
                        set embeddedDescription to ""
                    else
                        set the embeddedDescription to (text from ((length of "kMDItemDescription = \"") + 1) to -2 of embeddedDescription)
                    end if
                    set thisImageDescription to embeddedDescription
                on error
                    return ""
                end try
               
                if i < (count of theseImages) + 1 then make new page
                tell current page
                    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
                    if thisImageDescription is not "" then
                        set thisShape to make new shape with properties {width:(templateWidth - (4 * defaultMargin)), height:90, position:{(2 * defaultMargin), (templateHeight - (4 * defaultMargin))}, opacity:40}
                        tell thisShape
                            copy {width of it, height of it} to {shapeWidth, shapeHeight}
                            copy its position to {shapeHorizontalOffset, shapeVerticalOffset}
                        end tell
                        set thisTextItem to make new text item with properties {object text:thisImageDescription, width:(shapeWidth - (2 * textItemInset)), height:(shapeHeight - (2 * textItemInset)), position:{shapeHorizontalOffset + textItemInset, shapeVerticalOffset + textItemInset}}
                        tell object text of thisTextItem
                            set font to defaultTypeFace
                            set size to defaultTypeSize
                            set color of it to "white"
                        end tell
                    end if
                end tell
            end repeat
        end tell
        save front document
        quit
    end tell
   
    return input
end run
 
Dernière édition:
Pour une sélection automatique en entrée du script:
Ajoutes une action à automator : "Obtenir les éléments sélectionnés du finder" voir copie écran, et mettre ce nouveau script.
Reste plus que la page blanche en fin de document ! à régler mais :banghead: ...

Capture d’écran 2020-04-10 à 15.55.54.png

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
                
                try
                    set thisImagePOSIXPath to the POSIX path of thisImageFile
                    set the embeddedDescription to ¬
                        do shell script "mdls -name kMDItemDescription " & (quoted form of thisImagePOSIXPath)
                    if embeddedDescription is "kMDItemDescription = (null)" then
                        set embeddedDescription to ""
                    else
                        set the embeddedDescription to (text from ((length of "kMDItemDescription = \"") + 1) to -2 of embeddedDescription)
                    end if
                    set thisImageDescription to embeddedDescription
                on error
                    return ""
                end try
                
                if i < (count of theseImages) + 1 then make new page
                tell current page
                    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
                    if thisImageDescription is not "" then
                        set thisShape to make new shape with properties {width:(templateWidth - (4 * defaultMargin)), height:90, position:{(2 * defaultMargin), (templateHeight - (4 * defaultMargin))}, opacity:40}
                        tell thisShape
                            copy {width of it, height of it} to {shapeWidth, shapeHeight}
                            copy its position to {shapeHorizontalOffset, shapeVerticalOffset}
                        end tell
                        set thisTextItem to make new text item with properties {object text:thisImageDescription, width:(shapeWidth - (2 * textItemInset)), height:(shapeHeight - (2 * textItemInset)), position:{shapeHorizontalOffset + textItemInset, shapeVerticalOffset + textItemInset}}
                        tell object text of thisTextItem
                            set font to defaultTypeFace
                            set size to defaultTypeSize
                            set color of it to "white"
                        end tell
                    end if
                end tell
            end repeat
        end tell
        save front document
        quit
    end tell
    
    return input
end run
 
ci-dessous une version du script allégé, Mais toujours la page blanche!

Bon tests....

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 < (count of theseImages) + 1 then make new page
                tell current page
                    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
        save front document
        quit
    end tell
    return input
end run
 
Bonjour,
Ma recherche du bug à enfin payé !
Je te met le script qui ne crée pas de page blanche en fin du doscument.
Ce script est à utiliser avec automator (4 actions) du message #16

Chez moi ça fonctionne ! dis-moi si tout est OK pour toi .

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
        save front document
        quit
    end tell
    return input
end run
 
Bonjour,

Bonne fêtes de Pâques.
Tu peux encore améliorer un peu en effaçant les fichiers PDF de 1 page créés en ajoutant un petit bloc de script juste avant le :
"save front document".
Ce qui donne:

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
            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
        
        save front document
        quit
    end tell
    return input
end run
 
  • J’aime
Réactions: sveireman
Tu peux encore améliorer un peu en effaçant les fichiers PDF de 1 page créés en ajoutant un petit bloc de script juste avant le : "save front document".
Ce qui donne :

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
            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
      
        save front document
        quit
    end tell
    return input
end run
Bonjour,

Je viens de tester votre code. C'est vraiment super. Je recherchais justement comment faire cela. Merci. Je n'ai aucune expérience d'AppleScript et peu avec Automator.

J'ai constaté une erreur d'exécution lorsque le nom du PDF de base ne comporte que 2 caractères. Ce qui n'est pas un gros problème.
Par contre, le document Pages créé comporte au moins 2 fois chaque page du PDF. Est-ce normal ? Ai-je fait une erreur ?
 
Dernière édition par un modérateur: