IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Detection format mots dans fichier


Sujet :

AppleScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 573
    Par défaut Detection format mots dans fichier
    Bonjour,

    J'aie des fichiers pdf et word.
    Je voudrais pouvoir récupérer le format des mots (gras, italique, majuscule, en rouge, arial ...)

    Pour l'instant je transforme ces 2 types de fichiers en un fichier RTF avec un copier/coller.

    Je me retrouve donc avec un fichier RTF et j'essaye d'utiliser Tell application "TextEdit" pour récupérer ces infos, et c'est la ou je coince ...
    Donc 2 petites questions:

    - Pensez-vous que le choix de transformer les fichiers en RTF et utiliser TextEdit soit la meilleure soluce ? si non, qu'elle est la meilleure pour vous ?
    - Si TextEdit, est ce scriptable pour obtenir ce résultat ?

    A+

    Thais

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonsoir Thais,
    TextEdit est scriptable.
    Bein que je ne puisse confirmer ou infirmer si passer par TextEdit est la meilleure solution en provenance de fichier PDF, voici toutefois un script qui te permet de lire les attributs de police d'un texte dans un document RTF de TextEdit (je suppose que le fichier est ouvert !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tell application "TextEdit"
    	activate
    	repeat with I from 1 to count of words of text of front document
    		get font of the word I of text of the front document
    		get size of the word I of text of the front document
    		get color of the word I of text of the front document
    	end repeat
    end tell
    La difficulté est que les attributs gras/italique sont inclus dans le nom de la police "get font", et je n'ai pas trouvé l'attribut souligné.
    Je cherche encore un peu...

    Cordialement

  3. #3
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonsoir Thais,
    Voici le code pour lire les attributs de chaque mot d'un document Word (en boucle).

    Pour tester, j'ai mis un display dialog...que tu devras retirer, bien sûr !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    tell application "Microsoft Word"
    	activate
    	repeat with I from 1 to count of every word of front document
    		set Mon_Mot to word I of the front document
    		set Mon_Texte to content of Mon_Mot
    		set Ma_Taille to font size of font object of Mon_Mot
    		set Ma_Police to name of font object of Mon_Mot
    		set F_Italique to italic of font object of Mon_Mot
    		set F_Bold to bold of font object of Mon_Mot
    		set F_Color to color of font object of Mon_Mot
    		set Mon_Case to case of Mon_Mot
    		display dialog "mot=" & Mon_Texte & return & "taille=" & Ma_Taille & "Attributs B, I = " & (F_Bold as string) & ", " & (F_Italique as string) & return & "case=" & (Mon_Case as string)
    	end repeat
    end tell
    Bold, Italique sont des booleans. Case est un résultat de type :
    - "lower case" = tout minuscule
    - "title sentence" = majuscule à chaque première lettre de chaque mot (je coirs !)
    - "title word" = majuscule sur la première lettre du mot et minuscule sur les autres
    - "upper case" = tout en majuscule
    - "toggle case" = je crois que c'est un mixe ... à vérifier !

    Cordialement

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 573
    Par défaut
    Salut Philippe,

    Merci pour ton aide c'est nickel.

    Tu as l'air réservé sur l'utilisation de Word pour ce type d'action, as tu une meilleure idée ?

    En passant tu as peut être une idée sur le morceau de code ci-dessous, je souhaites récupérer l'offset d'un mot donné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    set sText to "bonjour toto comment ca va, bonjour titi"
    set AllWords to every word of sText
     
    set word6 to contents of item 6 of AllWords
    display dialog word6
     
    set Offset6 to offset of word6 in sText
    display dialog Offset6
    .... et comme le mot6 est bonjour et que le mot1 aussi alors il me renvoi 1 au lieu de 29 .....

    A+

    Thais

  5. #5
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour Thais,
    Je ne suis pas réservé sur l'utilisation de WOrd. je trouve simplement que Word en AppleScript n'est pas toujours simple et pratique. En fait il est plus adapté au langage VBA et cela se ressent dans sa traduction Applescript... mais ce n'est que mon avis.

    Quant à ton code, il faudrait essayer en manipulant le texte range de Word, pour que ta ligne 7 ne cherche pas l'offset du mot à partir du début de ton texte, mais seulement à partir du second mot (éliminant ainsi la première occurrence)

    Quelque chose du type : (trouvé sur un site web - voir ci-dessous)
    Ce lien se réfère à Word 2004, mais peut de choses ont changé depuis.
    http://www.google.fr/url?sa=t&rct=j&...,d.d2k&cad=rja

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set aRange to set range text object of active document start ¬ (start of content of text object of paragraph 2 of active document) ¬ end (end of content of text object of paragraph 4 of active document)
    Dans ton cas, il faut adapter car il s'agit de words et non de paragraphes, mais le principe est là.

    Cordialement

Discussions similaires

  1. [XL-2007] Format javascript dans fichier texte via urldownloadtofile VBA
    Par patbo2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2009, 12h44
  2. Detecter un mot dans une phrase
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/09/2008, 21h52
  3. detecter une ligne a un seul mot dans un fichier txt
    Par malikoo dans le forum Général Python
    Réponses: 9
    Dernier message: 04/07/2007, 19h43
  4. Recherche d'un mot dans fichiers JAVA
    Par arsenik7 dans le forum Langage
    Réponses: 2
    Dernier message: 02/08/2006, 11h25
  5. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo