1 votos

Insertar líneas en blanco en el archivo RTF con AppleScript

Alguien me puede decir ¿cuál es la mejor manera que puedo automáticamente insertar una línea en blanco en la parte superior y la parte inferior de estos recién creado .los archivos rtf, para estas dos piezas separadas de código?

Primera pieza de código (por si el portapapeles contiene texto enriquecido):

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

Segunda pieza de código (por si el portapapeles contiene 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

Las líneas en blanco no tiene que ser de un determinado tipo o tamaño de fuente; las líneas en blanco, simplemente debe coincidir con el estilo de los alrededores .archivo rtf (es decir, el estilo de los ricos de texto en el portapapeles).

3voto

Baczek Puntos 150

Usted puede utilizar este Cacao-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

Después de que su guión se han escrito en el archivo RTF: simplemente llame a la insertTextInRTFFile() de controlador con el posix ruta de acceso del archivo RTF como parámetro.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X