Rtf описание формата файла

Обновлено: 06.07.2024

Данный формат был определен фирмой Microsoft Corporation как стандартный формат для обмена текстовыми документами. Следовательно, по назначению этот формат подобен SYLK-формату для электронных таблиц.

RTF поддерживается многими продуктами фирмы Microsoft. Так, например, начиная с версии 2.0, он введен в Windows в качестве Clipboard-формата, благодаря чему возможен обмен данными между различными прикладными программами Windows. Кроме того, RT-формат поддерживается программами WORD для Macintosh, начиная с версии 3.X, и WORD для PC, начиная с версии 4. X.

В RTF для обмена документами используются только представимые символами коды из ASCII-, MAC- и PC-символьного набора. Кроме текста, файл в RT-формате в читаемой форме содержит команды управления.

Документ состоит преимущественно из команд управления настройки программы чтения файлов в RTF-формате. Эти команды можно разделить на управляющие слова (control words) и управляющие символы (control symbols).

Управляющее слово представляет собой последовательность символов с разделителем (delimiter) в конце: \lettersequence <delimiter>

Перед управляющим словом вводится обратная косая черта "\" (backslash). В качестве разделяющих могут использоваться следующие символы:

  • Пробел (space), причем этот символ относится к управляющему слову;
  • Цифра или знак "-". После этих символов должен следовать параметр с разделителем. В качестве разделителя может быть использован пробел или другие символы, кроме цифр и букв;
  • Все символы, отличные от цифр и букв. Эти символы не относятся к управляющему слову.

В RT-формате для задания управляющей последовательности используются буквы от "А" до "Z" и от "а" до "z", а также цифры от "0" до "9". Национальные символы к управляющей информации не относятся.

Принцип работы

В RTF-файлах, символы за пределами диапазона ASCII кодируются с помощью «управляющей последовательности". Управляющие последовательности подразделяются на: "Unicode escapes» и «code page escapes».

Unicode Escapes: это слово сопровождается 16-битовым десятичным числом. Это число описывает номер устройства

Unicode UTF-16. Code page escapes: это слово, содержит обратный слэш и апостроф представления символа, используемого на странице кода Windows.

Эти команды в основном написаны для определения факторов, таких как форматирование текста, шрифт текста, изображений, встроенных в тексте, маржи и т.д.

Форматирование необходимо для различных документов, таких как резюме, письма, руководства пользователя и т.д. Основные функции RTF документов включают жирный шрифт, курсив, подчеркивание, стили шрифтов, отступ и выравнивание (левый, центральный, правый). [Источник 2]

Концепция чтения и записи

Программное обеспечение, которое преобразует RTF-файл в отформатированный файл называется «reader». Программное обеспечение, которое преобразует форматированный файл в формат RTF называется «writer». Его задача (для приложения) включает отделение управления информационного кода из текстового компонента. Затем он записывает новый файл с текстом и связанные с ним RTF группы.

Преимущества

Совместимость файла: Самой важной особенностью файла RTF является его совместимость с многочисленными операционными системами и приложениями для работы с текстом.

Защита от вирусов: вложенным файлам (с расширением .doc) менее доверяют бизнес-организации или почтовые серверы, поскольку они могут содержать вирусы. В отличие от файлов .doc, .rtf файлы не содержат макросы или вирусы, которые могут содержать текстовые документы.

Размер файла: текстовый файл сохраненный в.rtf формате, занимает меньше места, чем файл .doc. RTF файлы используют текстовую кодировку. Это выгодно, потому что мелкие файлы легче скачивать и закачивать, а также сэкономят место для хранения на диске.

Недостатки

Безопасность

RTF файлы не могут быть защищены паролем. Если файл содержит конфиденциальную информацию, которой необходимо обеспечить защиту, то желательно использовать другие форматы.

Размер файла:

Если файл содержит изображения, Word-Art и т.д., размер файла невероятно больше, чем соответствующий .doc файл. Это является недостатком, так как он потребляет больше времени для загрузки и выгрузки, а также занимает больше места на диске.

Способы чтения формата

Windows: Microsoft WordPad, Microsoft Word, Microsoft Works, Corel WordPerfect Office X6, Nuance OmniPage, Atlantis Word Processor, TextMaker Viewer, TextMaker, AbiWord, IBM Lotus Symphony, Adobe Illustrator, Ability Write, Любой текстовый редактор, поддерживающий форматированный текст

MacOS: Apple TextEdit, Apple Pages, Microsoft Word, Nuance OmniPage Pro X, NeoOffice, iWork Pages, Любой текстовый редактор, поддерживающий форматированный текст

Кроссплатформенное ПО: OpenOffice, LibreOffice Writer, LibreOffice

Google Android: OfficeSuite Viewer, OfficeSuite Professional [Источник 3]

Что ж продолжим наши изыскания на предмет получения текста из различных форматов данных. Не так давно мы с вами научились вытаскивать текст из zipped-xml-based файлов (odt и docx), а также, в начале этой недели, из pdf. Сегодня мы продолжим с обещанным rtf.

Rich Text Format (он же rtf), вы могли бы подумать, достаточно забытый, хотя и не очень сложный формат представления текстовых данных. Что ж, относительно несложный для получения текста, но за свою историю: от своей первой версии до текущей 1.9.1 — он приобрёл под 300 страниц официально документации и огромное количество надстроек, которые в большей степени нам будут мешать при получении plain text'а. Попробуем их обойти.

А что там внутри?

Как уж повелось давайте заглянем вовнутрь rtf-файла и посмотрим, что там внутри:

Будем считать, что rtf состоит из управляющих слов, которые могут быть сгруппированы во вложенные множества. Управляющие слово начинается на обратный слэш ( \ ), группа обёрнута в фигурные скобки ( < и >).

Управляющие слово состоит из последовательности букв английского алфавита (от a до z ) и может быть завершено численным параметром (возможно отрицательным). Как вариант, слово может содержать один не цифро-буквенный ascii-символ. Всё, что не подпадает под эти правила, не является частью управляющего слова. Таким образом, последовательность вида \rtf1\ansi\ansicpg1251 без проблем делится на три слова rtf с параметром 1 (major-версия формата), ansi (текущая кодировка) и ansicpg с параметром 1251 (текущая кодовая страница под номером 1251 — т.е. Windows-1251).

Группированные множества определяют область действия управляющих слов. Таким образом, управляющие слова описанные внутри фигурных скобок работают только внутри них и всех дочерних подмножеств. Для того, чтобы правильно отработать какие слова имеют место сейчас — требуется вести стек управляющих слов. При открытии фигурной скобки создавать новый элемент-массив в стеке, в который сразу же добавлять данные предыдущего слоя стека, при закрытии скобки — удалять самый верхний слой.

Ещё стоит отметить, что некоторые управляющие слова могут быть закрыты с помощью добавления параметра ноль, а не создания новой подгруппы. Например, следующие варианты эквивалентны: This is text , This is \b bold \b0 text = This is bold text .

Откуда брать текст?

С устройством нового для нас формата мы познакомились, теперь зададимся вопросом, а где брать текст. Тут всё не так сложно, как может показаться — текст надо брать там, где текущая последовательность не идентифицируется, как управляющее слово. С парой исключений, естественно.

Во-первых, стоит отметить, что исходная кодировка rtf-файла — это ANSI, поэтому без всякий изысков сохранится только, английский текст. Нас же интересует, как минимум, русский текст, а ещё лучше Unicode, не так ли? Что правда, то правда — rtf хоть и старый формат, но сгодится на сохранение и того и другого.

Итак, в rtf'е есть возможность использования второй половины таблицы ASCII, та что от 128 и выше. С учётом текущей кодировки (выше управляющее слово \ansicpg ), конечно же. Для этого в RTF была введена последовательность вида \'hh , где hh — это двоичный hex-код символа из таблицы ASCII.

Ну и второй, более интересный вариант, это unicode-кодированные данные. Для них в формат включено лаконично короткое ключевое слово \uABCD с цифровым параметром ABCD. ABCD в данном случае код unicode-символа в десятичной системе счисления. Всё опять просто, как вы могли заметить.

Просто, да не очень. В rtf существует ещё одно ключевое слово \ucN , которое тесно связано с Unicode. Дело в том, что формат RTF очень рьяно поддерживает совместимость со старыми устройствами, на которых возможно придётся открывать данный файл. Как вариант, подобное устройство (ну например компьютер с Windows 3.11 :) не сможет прочитать Unicode, что ему делать? Для этого после каждого unicode-символа, шифрованного ключевым словом \u может быть указано от нуля до нескольких символов, которые должны быть отображены в случае, если rtf-viewer не способен отобразить или разобрать текущие данные (по документации, если просмотрщик не может отобразить верно данные, он должен их пропустить).

В связи с этим, большинство современных редакторов после unicode-управляющего слова ставят символ вопроса, как знак, что требуется показать вместо текущего символа. Но возможны и варианты, например: Lab\u915GValue . Зададимся вопросом — сколько символов требуется отобразить, если нет возможности показать Unicode. Всё опять же не очень сложно — указанное выше ключевое слово \ucN в качестве параметра N как раз и предоставляет это значение. Т.е. перед Unicode-данными обязательно появится что-то типа \uc1 , что скажет нам пропустить один символ после unicode'а.

Давайте почитаем!

Похоже, что накопленных нами данных будет достаточно, чтобы прочитать наши первые rtf-файлы. Поехали:

  1. function rtf_isPlainText ( $s )
  2. $failAt = array ( "*" , "fonttbl" , "colortbl" , "datastore" , "themedata" ) ;
  3. for ( $i = 0 ; $i < count ( $failAt ) ; $i ++ )
  4. if ( ! empty ( $s [ $failAt [ $i ] ] ) ) return false ;
  5. return true ;
  6. >
  7. function rtf2text ( $filename )
  8. $text = file_get_contents ( $filename ) ;
  9. if (! strlen ( $text ) )
  10. return "" ;
  11. $document = "" ;
  12. $stack = array ( ) ;
  13. $j = - 1 ;
  14. for ( $i = 0 ; $i < strlen ( $text ) ; $i ++ )
  15. $c = $text [ $i ] ;
  16. switch ( $c )
  17. case " \\ " :
  18. $nc = $text [ $i + 1 ] ;
  19. if ( $nc == '\\' && rtf_isPlainText ( $stack [ $j ] ) ) $document .= '\\' ;
  20. elseif ( $nc == '

Код с комментариями вы можете получить на GitHub'е.

Заключение

Что мы имеем в итоге? Данный код справится верно с большинством rtf-файлов, но есть несколько способов его улучшить. Во-первых, стоит добавить дополнительные отсечения на нетекстовые данные — у меня отсекаются только шрифты, цветовая палитра, тема оформления, бинарные данные, а также всё, что помечено, как «не читай меня, если не можешь» ( \* ). Во-вторых же, стоит ещё распарсить кодировку и кодовую страницу, для того чтобы вернее отобразить ключевые слова вида \'hh .

Что дальше? Дальше я бы хотел затронуть форматы электронных книг, такие как fb2, epub и подобные им. В связи с этим, я хотел бы обратиться за помощью к читателям: во-первых, какие ещё форматы электронных книг стоит посмотреть, а во-вторых, где можно найти побольше файлов, указанных вами форматов. Заранее спасибо :)

Что представляет собой файл RTF? Rich Text Format , в переводе с английского «богатый текстовый формат» от корпорации Microsoft, поддерживаемый многими версиями операционных систем и текстовыми редакторами. Это текстовые документы, для создания, а также для открытия, редактирования, изменения используются популярные компьютерные приложения по обработке текстов. С помощью этого формата осуществляют набор текста, его сохранение и копирование для других операционных систем. Для его характерно содержание только текстовых данных. При этом они могут набираться в любом другом формате, но окончательное сохранение выполняется в расширении RTF. Перенесение его текстового материала из одной программы в другую (Microsoft Office) совершенно несложное. Это же касается и версий операционной системы.

Зачем нужны файлы формата RTF

Они позволяют осуществить форматирование текста, выделить его участки наклонным или жирным шрифтом, подчеркнуть некоторые элементы. Напечатанным символам можно подобрать разные варианты шрифта и цвета. С форматом файла RTF несложно установить различное расстояние между строчками, выставить отступ текстового материала относительно края листов. Он существенно востребован у компьютерных пользователей.

Открываем RTF-файл с помощью программ и сервисов

Как открыть RTF на компьютере

Открыть файл на компьютере поможет штатное приложение WordPad, расположенное в меню «Пуск». Запустив его, нужно активировать мышкой кнопку главного меню и выбрать пункт «Открыть» и указать путь к документу, который нужно открыть. Приложение отображает весь каталог поддерживаемых форматов, не исключение RTF.
Также контекстное меню позволяет открыть требуемый файл, кликая правой кнопкой мышки по значку документа. Открывшееся меню отобразит все программы для его просмотра.

Как открыть RTF на Андроиде

Программа Smart Office, скачанная на планшет или другое мобильное устройство, поможет открыть RTF на андроид.
Достаточно хорошо поддерживает этот формат в данной операционной системе программа Cool Reader. Хорошее отображение оглавления, заголовков, изображений, чего нельзя сказать о таблицах.

Как открыть RTF в режиме онлайн

Чтобы открыть RTF онлайн, также осуществлять их изменения, можно воспользоваться практически всеми текстовыми редакторами популярных операционных систем (Mac OS, Windows) и многими бесплатными офисными программами. Поэтому, отправив по электронной почте документы в данном формате, можно не сомневаться в том, что получателю несложно будет открыть и изучить их в онлайн режиме, даже в том случае, если у него на ПК не установлен Офис.
Открыть файл онлайн несложно в Гугл документах. Перейдя по их адресу, нужно нажать вкладку «Открыть». В области правого нижнего угла активируют окошко «Создать документ». В открывшемся меню выбрать «Открыть». Во вкладке «Загрузка» мышкой активируют «Открыть» и выбирают файл данного расширения на ПК.

Как создать RTF-файл самому

Чтобы создать RTF файл самому, не потребуется какого-либо особого умения, просто нужно скачать и установить бесплатную программу Microsoft Office Excel Viewer для Windows. Ее интерфейс достаточно простой. Для операционной системы Mac подойдет Apple TextEdit. Эта программа считается основной для данной ОС. Создав текстовый документ, при сохранении выбирают нужный формат.

Конвертер для RTF-файлов

Преобразование документов одного формата в другой возможно с конвертером для файлов RTF. Многие сервисы предлагают свои услуги в этом направлении. Некоторые даже не требуют специальной установки на компьютер. Пользователю необходимо загрузить файл с диска или другого интернет ресурса в специальную область для конвертации. Далее подтвердить свои действия. На выходе он получит документ высокого качества требуемого формата.

Вместо номера страницы используется текст.

Генерация номеров страниц для области, содержащей за­кладку ( bookmark ).

В составе формата предусмотрены операторы форматирования документа ( document formatting ). Их действие может распространяться на весь текстовой материал:

Команда \ paperw 000 задает ширину листа в twips (один twip равен 1/20 пункта или 1/1440 дюйма). Значение ширины указывается вместо 000. Если команда отсутствует, то ширина листа устанавливается равной 12240 twips.

Команда \рареrh000 задает высоту листа в twips. Значение высоты указывается вместо 000. Если команда отсутствует, то высота листа устанавливается равной 15840 twips.

С помощью команды \ margl 000 можно устанавливать ширину левого поля при печати в twips. Стандартная ширина поля равна 1800 twips.

С помощью команды \ margr 000 можно установить ширину правого поля при печати в twips. Стандартная ширина поля равна 1800 twips.

Оператор \ margt 000 служит для установки ширины верхнего поля ( margin top ) при печати. Стандартная ширина поля равна 1440 twips.

С помощью команды \ margb 000 устанавливается ширина нижнего поля ( margin bottom ) при печати. Стандартная ширина поля равна 1440 twips.

Оператор \ facingp ( facing page ) определяет внешний вид страницы. Он устанавливает, например, печатается колонтитул на четных или на нечетных страницах. Если за оператором следует параметр 0, то вывод подавляется.

С помощью оператора \ gutter 000 можно установить ширину поля подшивки ( gutter ) внутри facing page .

Команда \ deftab 000 определяет величину табулятора. Стандартное значение составляет 72 twips.

Предусмотрена работа со сносками:

Если в документе указан оператор \ endnotes , то тексты сносок размещаются в конце фрагмента.

По умолчанию тексты сносок выводятся в конце страницы ( footnotes bottom justified ) . Оператор \ ftobj позволяет переключиться с установки, заданной опер тором \ endnotes , на стандартную установку.

При использовании оператора \ ftntj т ексты сносок выводятся в тексте ( footnotes top justified ) .

При указании этого оператора \ ftnrestart нумерация сносок на каждой странице начинается с 1. Параметр 0 отключает эту установку.

Оператор \ ftnsep определяет разделитель, который отделяет сноски от текста.

Оператор\ ftnsepc определяет разделитель, который отделяет сноски, продолжающиеся на следующую страницу, от текста.

Команда \ftncn задает отметку для следующей сноски.

Команда \ enddoc определяет сноску в конце документа.

Команда\ landscape используется для задания альбомную ориентацию ( landscape ) издания. При указании параметра 0 восстанавливается книжная ориентация.

В составе формата RTF имеются операторы для задания начертания и способа выделения символов при создании редакторских примечаний; форматирование секции ( section formatting ); команды задания расстояния между строк; операторы нумерации строк; операторы задания атрибутов колонтитулов; команды выравнивания; операторы форматирование абзаца ( paragraph formatting ) ; установки параметров отступа первой строки абзаца ( first line indent ) ; операторы задания атрибутов рамки вокруг абзаца; операторы форматирования таблиц и др.

Набор операторов рассматриваемого формата ориентирован на описание сложного текстового материала, включающего иллюстрации, таблицы, диаграммы и другие элементы печатных изданий.

Формат RTF применяется для представления электронных изданий, созданных в среде MS Office и приложений операционной системы Windows. Обычно он выполняет функции обменного формата.

Читайте также: