Renommer PDF avec information contenu fichier

ordonez09

Membre confirmé
15 Mai 2019
74
1
Bonjour,

J'ai de nombreux fichiers pdf, nommés de la même façon, mais il me manque une information à la fin du titre.
Cette information est précisée dans chaque pdf, après une mention identique "Information n° 000000".
Je souhaiterai ajouter ce n° à la fin de chaque nom de fichier (chacun le sien), mais j'ai besoin d'un coup de main :)
Possible avec un script, automator ou autre?
Merci!
 
Bonjour
Tu veux extraire un numéro à l’intérieur du pdf pour l’ajouter dans le nom de fichier de façon automatique ?
 
Bonsoir,

C'est peut-être réalisable avec un cumul d'automator et d'applescript...
Mais il faut être sur que les pdf soient bien du texte et pas des images misent en pages, voir leur provenance.
Il faut ensuite que les PDF soient groupés dans un dossier ne contenant que les pdf à traiter.
Il faut également être sur qu'ils contiennent bien le numéro cherché avec exactement le même format de mise en forme dans tous les fichiers, comme : "Information n° 000000" et que le numéro soit dans tous les fichiers avec 6 chiffres.

Avec toutes ces informations on pourrait envisager d''écrire quelque chose...

le principe:
-Créer un dossier temporaire sur le bureau
-Y copier le fichier PDF à renommer
-En extraire le texte avec automator dans un fichier.txt
-Traiter ce fichier texte en cherchant le numéro
-Renommer le fichier PDF avec le numéro
-Effacer les fichiers dans le dossier temporaire
-Fichier suivant et on boucle.
 
Bonjour,

Oui les fichiers sont tous des pdf « lisibles », ce ne sont pas des images numérisées.
Chacun a ce numéro, toujours précédé de la même mention « Information n : ». Et ils ont tous le même nombre de chiffre.

Le but n’est pas de renommer intégralement le nom de chaque fichier mais de lui ajouter, à chacun, ce numéro à la fin genre « -000000.pdf ».

J’ai tenté avec un logiciel gratuit (pdfzone): ça marche, mais limité à 4 fichiers à chaque traitement: j’en ai presque 300, du coup j’me suis emmêlé les pinceaux…

Merci de votre aide!
 
Peux-tu mettre un copié collé de la partie avec le numèro:
Information n :
ou
Information n° 000000
Tu donnes 2 infos différentes !

Ou mieux peux-tu mettre à dispo un des fichiers que tu auras anonymisé.
Je regarde pour faire cela (mais W.E. de Pâques...)
 
Bonjour,

L'information à récupérer est toujours précédée de la mention "Contrat n° : 1234567". Toujours un numéro à 7 chiffres.
Je ne peux pas partager ces fichiers, même anonymisés.

Merci beaucoup! Bon week-end! :up:
 
Un premier test:

Il faut d'abord créer une petite application automator;
Tu ouvres automator, tu choisis application puis tu y met les actions comme sur la copie d'écran.
Dans la 1ere action"obtenir les éléments du finder indiquée", tu crées sur le bureau un dossier nommé "Temp" et tu le glisses sur la fenêtre.
Dans le 3ieme action, dans "enregistrer la sortie dans :" tu sélectionnes le dossier Temp qui est sur le bureau et dans ""Nom personnalisé" tu met "Letexte"
Tu enregistres en tant qu'application sur le bureau, en le nommant "PDFenTEXTE"
Puis tu supprimes le dossier "Temp" qui est sur le bureau.
Capture d’écran 2024-03-30 à 09.04.29.jpg

Tu ouvres l'éditeur de script et dans la fenêtre tu fais un copié collé de :
Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le  dossier contenant les fichiers à renommer"
   
    set tous to every file of entire contents of chemin
    set nb to count tous
   
    repeat with i from 1 to nb
        make new folder at desktop with properties {name:"Temp"}
        set ledossiertemp to ((path to desktop folder as text) & "Temp:") as alias
        set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
        set lepdf to item i of tous
       
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of (name of lepdf as string) --nom --ou of (name of a as string)
        set nomcourt to (items 1 thru -2 of elements) as string
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
       
        duplicate lepdf to ledossiertemp
       
        tell application "PDFenTEXTE"
            launch
            activate
        end tell
       
        delay 1

        set sauv to AppleScript's text item delimiters
        set lefich to lefichiertexte as alias
        set letexte to read file lefich
        set AppleScript's text item delimiters to "Contrat n° : "
        set suite to text item 2 of letexte
        set lessept to text 1 thru 7 of suite as text
        set AppleScript's text item delimiters to sauv
       
        set name of lepdf to nomcourt & "-" & lessept & ".pdf"
       
        do shell script "rm -r " & POSIX path of ledossiertemp
       
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

Il suffit ensuite de lancer ce script
Lors de la première exécution tu auras des demandes d'autorisations pour les différents accès, tu donnes ces autorisations. Tu auras également une demande pour localiser l'application "PDFenTEXTE".

En fonction de la grosseur des PDF l'extraction du texte sera plus ou moins longue, afin d'attendre que l'extraction soit finie avant de lancer la recherche dans le texte j'ai mis un delay 1 (délai de 1 secondes) qui te faudra peut-être augmenter !

Bon tests ! j'attends tes observations
Fais quand même le test sur une copie du dossier contenant une dizaine de PDF pour voir si c'est bon !
 
Dernière édition:
  • J’aime
Réactions: Powerdom
Bonjour,

Merci beaucoup!

J'ai eu l'erreur ci-dessous, qui a disparue depuis:
error "Impossible de convertir \"Desktop:Temp:Letexte.txt\" en type alias." number -1700 from "Desktop:Temp:Letexte.txt" to alias

Mais la suivante persiste:
error "Erreur dans Finder : Erreur d’autorisation de fichier." number -54 from file "Desktop:Temp:Letexte.txt"
 
Quand tu as ces erreurs, quel partie du script est surligné?
Car je viens de retester chez moi, pas de problème.
Pour la 1ere erreur je pense que le fichier "letexte.txt" n'a pas eu le temps de se créer, il faut alors augmenter le delay de 1 à 2 secondes.

Pour la 2ieme une histoire d'autorisation d'accès , faut voir à quel moment se produit cet erreur! les différentes demande d'autorisation ont bien été acceptées ?
 
Dernière édition:
Ok , tu as augmenté le délaie à 2 secondes ? Ou plus

edit : c’est quand il essai de lire le fichier texte, bien sur s’il n’existe pas encore !
 
Oui augmenté à 2.
Et c'était bien un problème d'autorisation dans Préfèrences (accéder au Bureau pour Apple script). Ça, c'est fait.

Maintenant j'ai ça:
error "Il est impossible d’obtenir text item 2 of \"TOUT LE TEXTE DU PDF" o_O Avec la partie "text item 2" surlignée dans le script.
 
Ce qui voudrait dire qu'il n'a pas trouver "Contrat n° : " dans le texte.

Tu peux vérifier à la main le contenu du fichier "letexte.txt" qui se trouve dans le dossier Temp sur le bureau.
 
Est ce qu'il y a bien "Contrat n° : "
Exactement comme çà avec les espaces ?

Edit fait un copié collé du passage contenant ce fameux numéro avec le texte ... pour comparer
 
Fait un copié coller de cette partie dans ta réponse !