1 votes

Insertion de lignes vides dans un fichier RTF avec AppleScript

Quelqu'un peut-il me dire quel est le meilleur moyen d'insérer automatiquement une ligne vierge en haut et en bas de ces fichiers .rtf nouvellement créés, pour ces deux morceaux de code distincts ?

Premier morceau de code (pour quand le presse-papiers contient du texte riche) :

try
    set richTextfromClipboard to get the clipboard as «class RTF »
on error eStr number eNum
    display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
    return
end try

try
    set fileHandle to open for access theRichTextFilepath with write permission
    write richTextfromClipboard to fileHandle
    close access fileHandle
on error eStr number eNum
    display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with title "File I/O Error..." with icon caution
    try
        close access fileHandle
    end try
end try

Deuxième morceau de code (pour lorsque le presse-papiers contient du HTML) :

try
    do shell script "osascript -e 'try' -e 'get the clipboard as «class HTML»' -e 'end try' | awk '{sub(/«data HTML/, \"3C68746D6C3E\") sub(/»/, \"3C2F68746D6C3E\")} {print}' | xxd -r -p | textutil -convert rtf -stdin -stdout > " & quoted form of theRichTextFilepath
on error eStr number eNum
    display dialog eStr & " number " & eNum buttons {"OK"} default button 1 with icon caution
end try

Il n'est pas nécessaire que les lignes vides soient d'un type ou d'une taille de police prédéterminés ; elles doivent simplement correspondre au style du fichier .rtf environnant (c'est-à-dire le style du texte riche dans le presse-papiers).

3voto

Vous pouvez utiliser ce Cocoa-AppleScript :

-- Cocoa-AppleScript-- you need these lines in your script
use framework "Foundation"
use scripting additions

on insertTextInRTFFile(f) -- the parameter must be the posix path of an existing file, example  --> "/Users/someName/Desktop/xyz.rtf"
    set myText to linefeed -- the text to insert in the rtf (a blank line as example)
    tell current application
        set fileURL to its (NSURL's fileURLWithPath:f)
        set myOption to its (NSDictionary's alloc()'s initWithObjectsAndKeys_(its NSRTFTextDocumentType, its NSDocumentTypeDocumentOption, missing value))
        set {attrString, docAttrib, err} to its ((NSMutableAttributedString's alloc())'s initWithURL:fileURL options:myOption documentAttributes:(reference) |error|:(reference)) -- get the attributed string from the RTF file
        if attrString is missing value then error err's localizedDescription() as text -- not a RTF file or not a valid path

        -- it use the string in the 'myText' variable to create an attributed string 
        set firstline to its ((NSAttributedString's alloc())'s initWithString:myText attributes:(attrString's attributesAtIndex:0 effectiveRange:(missing value))) --  create an attributed string with the style of the first character
        set lastline to its ((NSAttributedString's alloc())'s initWithString:myText attributes:(attrString's attributesAtIndex:((attrString's |length|()) - 1) effectiveRange:(missing value))) --  create an attributed string with the style of the last character
    end tell
    attrString's insertAttributedString:firstline atIndex:0 -- insert an attributed string (blank line) at the top
    attrString's appendAttributedString:lastline -- insert an attributed string (blank line) at bottom
    set rtfData to attrString's RTFFromRange:{0, attrString's |length|()} documentAttributes:docAttrib -- create the data from an attributed string
    rtfData's writeToFile:f atomically:true -- write the data to the RTF file
end insertTextInRTFFile

Après votre script aura écrit dans le fichier RTF : appelez simplement le insertTextInRTFFile() avec le gestionnaire chemin posix du fichier RTF comme paramètre.

0 votes

Je vais devoir commencer à apprendre ce Cocoa-AppleScript, car les deux dernières réponses que tu as postées aux questions de la sphère de Rubik sont très intéressantes ! +1

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X