Renommer PDF avec information contenu fichier

Je ne comprend pas, si ce texte existe dans le fichier "letexte.txt" alors il devrait trouver l'item 2

On va faire un test en ne cherchant que le mot "Contrat"
change ces 3 lignes :
Bloc de code:
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

Par ces 3 lignes :
Bloc de code:
set AppleScript's text item delimiters to "Contrat"
        set suite to text item 2 of letexte
        set lessept to text 7 thru 14 of suite as text
puis bien sur tu effaces le dossier temp et tu refais un essai


Edit: j'aurais quand même bien aimé avoir un copié collé de cette partie du fichier (2,3 mots avant le mot contrat jusque après le numéro)
 
Le mot « contrat » revient plusieurs fois, avant et après cette ligne contenant le numéro, ça risque de poser problème.

Pour le texte avant: c’est une ligne au-dessus. Pareil pour le texte en dessous.
Ça donne ça:

Blablablabla
Contrat n° : 1234567

Blablablabla

Oui, ce sont des contrats très sérieux… :D
 
J'ai des doutes sur les espaces , il est possible que ce soit des espaces insécables, ou qu'il y ait des caractères invisibles...
Ce pourquoi je voulais un copié collé depuis le fichier "letexte.txt" et pas une recopie de ce que tu vois.
 
C’est un copier/coller à partir de letexte.txt justement. Je pensais aussi à un blanc ou caractère invisible.

C’est très bizarre qu’il reprenne TOUT le texte du pdf. S’il reprenait qu’à partir de Contrat n° ça serait déjà plus logique (même jusqu’à la fin).
Ça serait pas le « ° » de n° qui pose problème?!
 
Un autre petit test.

Avec le dossier "Temp" sur le bureau qui contient le fichier "Letexte.txt"

Lance ce script.
Cela devrait afficher:
le nombre de coupures du texte
Puis dans une mini fenêtre le texte de ton fichier mais en commençant par le numéro de contrat
Bloc de code:
tell application "Finder"
    set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
  
    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 nb to count text item of letexte
    display dialog "le texte à été coupé en " & nb
    set suite to text item 2 of letexte
    display dialog suite
    set AppleScript's text item delimiters to sauv
  
end tell

Dis moi si cela est conforme

Edit: nos post ce sont croisés, on verra après ce test pour rechercher "Contrat n"
 
A vérifier si il n'y a pas de tabulation en lieu et place d'un espace ?
 
Après plusieurs tests chez moi, il semblerai que ce soit bien le caractère "°" qui pose problème

Fait la recherche avec "Contrat n"
donc tu changes les 3 lignes
Bloc de code:
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
par
Bloc de code:
set AppleScript's text item delimiters to "Contrat n"
        set suite to text item 2 of letexte
        set lessept to text 5 thru 11 of suite as text

puis bien sur tu effaces le dossier temp et tu refais un essai

Dis moi si c'est bon !
 
Bonjour,
Toujours pas... Tout le texte est encore sélectionné.

J'ai ça comme erreur : error "Il est impossible d’obtenir text item 2 of \"TOUT LE TEXTE DU PDF" avec "text item 2" surligné dans le script.
 
Si ça peut aider, je te donne la structure autour de ce numéro:

ARTICLE 1 - Conditions Tarifaires
Contrat n° : 1234567
A compter de l’Entrée en Vigueur du présent

;)
 
Sans avoir le texte réel çà va être dur !

On va essayer de voir ce que contient réellement le texte "Contrat n° : 1234567"
pour cela fais un essai de ce script en remplaçant par copié collé depuis le fichier "letexte.txt" dans la première ligne de "Contrat n° : 1234567" par le collé, puis lance le script.
Il te dit combien de caractères il contient (pour vérif caractères invisible)
Puis il te donne les X caractères séparé par une virgule
Puis il te donne les code ascii des X caractères trouvés
Bloc de code:
set letexte to "Contrat n° : 1234567"
set laliste to ""
set lescodecaractere to ""
set nb to count character of letexte

display dialog nb

repeat with i from 1 to nb
    set laliste to laliste & (item i of letexte) & " , "
end repeat

display dialog laliste

repeat with i from 1 to nb
    set lescodecaractere to lescodecaractere & (ASCII number of (item i of letexte)) & " , "
end repeat

display dialog lescodecaractere

On devrait avoir
20
puis
C , o , n , t , r , a , t , , n , ° , , : , , 1 , 2 , 3 , 4 , 5 , 6 , 7 ,
puis
67 , 111 , 110 , 116 , 114 , 97 , 116 , 32 , 110 , 161 , 32 , 58 , 32 , 49 , 50 , 51 , 52 , 53 , 54 , 55 ,
 
Je viens de voir ton post #30
Si "ARTICLE 1" apparaît pour la première fois à cet endroit !
Alors on peut essayer de chercher "ARTICLE 1"

Les 3 lignes à changer deviendraient:
Bloc de code:
set AppleScript's text item delimiters to "ARTICLE 1"
    set nb to count text item of letexte
    set suite to text item 2 of letexte
    set lessept to text 39 thru 46 of suite as text

Voir ce que cela donne , si renommage il y a, est-ce les bons caractères qui sont ajoutés ?
 
Dernière édition:
Je me demande si le délai n’est pas trop court et que la recherche se fasse avant que le fichier texte soit finalisé .
essai de passer le delay à 4 pour voir
 
Oh et puis, comme si ça suffisait pas, je viens de me rendre qu'il y avait plusieurs n° de contrat à récupérer dans un même PDF o_O Sur l'un des PDF par exemple, j'en ai 3 différents, et sur un autre 2... Ça promet! Heureusement ils ont tous la même forme "Contrat n°: 1234567", mais il faudrait qu'ils s'ajoutent au titre "Exemple titre PDF-1234567-1234567-1234567.pdf".
 
Le script défini le texte qu'on lui donne ("Contrat n° :") ou autre comme étant un séparateur (délimiteur) de texte.
Donc il découpe le texte à chaque fois qu'il rencontre ce délimiteur.
S'il ne le trouve pas le texte reste entier
S'il en trouve un alors la partie avant ce délimiteur est l'item 1 du texte et la partie après l'item 2 du texte
S'il en trouve deux alors il découpe le texte et l'on a 3 item.

Pour voir si la découpe fonctionne:

Dans un dossier "Temp" sur le bureau tu mets un fichier "Letexte.txt"
et tu lances ce script, qui fait exclusivement la recherche de "Contrat n" puis te dis en combien il a coupé le texte, puis t'affiche le 2ième item
Ceci permettra de savoir si cette partie du script fonctionne sur ton fichier.
Bloc de code:
tell application "Finder"
    set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
  
    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 nb to count text item of letexte
    display dialog "le texte à été coupé en " & nb
    set suite to text item 2 of letexte
    display dialog suite
    set AppleScript's text item delimiters to sauv
  
end tell

Edit : je viens de voir ton post ci dessus et là il n'y a pas d'espace après "n°" avant les 2 points !
 
Dernière édition:
Bonjour,

C'était un oubli d'espace dans le post, t'inquiète j'ai vérifié ça dix fois...
Ton script test me donne en résultat: le texte à été coupé en 1
 
Alors ton fichier letexte.txt n’est pas bon ou ne contient pas « contrat n ».
Sans avoir ce fichier j’ai du mal à comprendre !

peux tu ouvrir ce fichier avec textedit et vérifier son contenu.