Convert Rich Text to Plain Text
Summary: Converts the selected RTF or RTFD files to plain text files.
Requires: EagleFiler
Install Location: ~/Library/Scripts/Applications/EagleFiler/
Last Modified: 2019-10-02
Description
This script converts the selected “.rtf” or “.rtfd” files into plain text (“.txt”) files in the UTF-8 encoding.
Installation Instructions · Download in Compiled Format · Download in Text Format
Script
on
run
tell
application
"EagleFiler"
set
_selection
to
selected records
of
browser window
1
repeat
with
_record
in
_selection
set
_uti
to
_record's
universal type identifier
if
_uti
is
in
{"public.rtf", "com.apple.rtfd"}
then
my
convertRecordToPlainText(
_record)
end
if
end
repeat
end
tell
end
run
on
convertRecordToPlainText(
_record)
tell
application
"EagleFiler"
set
_newName
to
my
plainTextNameForRecord(
_record)
set
_newFile
to
my
convertFileToPlainText(
_record's
file
,
_newName)
set
_newRecords
to
import
files
{
_newFile}
with
deleting afterwards
set
_newRecord
to
item
1
of
_newRecords
my
copyMetadata(
_record,
_newRecord)
set
_trash
to
trash
of
_record's
library document
set
_record's
container
to
_trash
end
tell
end
convertRecordToPlainText
on
plainTextNameForRecord(
_record)
tell
application
"EagleFiler"
set
_name
to
_record's
filename
if
_name
ends with
".rtf"
then
set
_end
to
(
length
of
".rtf") + 1
set
_base
to
characters
1
thru
-
_end
of
_name
else
if
_name
ends with
".rtfd"
then
set
_end
to
(
length
of
".rtfd") + 1
set
_base
to
characters
1
thru
-
_end
of
_name
else
set
_base
to
_name
end
if
return
_base & ".txt"
end
tell
end
plainTextNameForRecord
on
convertFileToPlainText(
_source,
_destName)
tell
application
"EagleFiler"
set
_tempFolder
to
POSIX path
of
(
create temporary folder
name
"EFRichTextToPlainText")
end
tell
set
_dest
to
_tempFolder & "/" &
_destName
set
_convert
to
"textutil -convert txt"
set
_outputArg
to
" -output " &
_dest's
quoted form
set
_sourceArg
to
" " &
quoted form
of
_source's
POSIX path
do shell script
_convert &
_outputArg &
_sourceArg
return
POSIX file
_dest
end
convertFileToPlainText
on
copyMetadata(
_source,
_dest)
tell
application
"EagleFiler"
set
_sourceURL
to
_source's
source URL
set
source URL
of
_dest
to
_sourceURL
set
container
of
_dest
to
_source's
container
set
_noteText
to
_source's
note text
set
note text
of
_dest
to
_noteText
set
_tags
to
_source's
assigned tags
set
assigned tags
of
_dest
to
_tags
set
_title
to
_source's
title
set
title
of
_dest
to
_title
set
_fromName
to
_source's
from name
set
from name
of
_dest
to
_fromName
set
_labelIndex
to
_source's
label index
set
label index
of
_dest
to
_labelIndex
set
_creationDate
to
_source's
creation date
set
creation date
of
_dest
to
_creationDate
set
_modificationDate
to
_source's
modification date
set
modification date
of
_dest
to
_modificationDate
end
tell
end
copyMetadata