Тарифы Услуги Сим-карты

Чем открыть файл rtf на компьютере. Чем открыть файл.RTF

Формат Rich Text (RTF)

Данный формат был определен фирмой Microsoft как стандартный формат для обмена текстовыми документами. Следовательно, по назначению этот формат подобен 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
Перед управляющим словом вводится обратная косая черта "\" (backslash). В качестве разделяющих могут использоваться следующие символы:
Ш Пробел (space), причем этот символ относится к управляющему слову;
Цифра или знак "-". После этих символов должен следовать параметр с разделителем. В качестве разделителя может быть использован пробел или другие символы, кроме цифр и букв;
Все символы, отличные от цифр и букв. Эти символы не относятся к управляющему слову.
В RT-формате для задания управляющей последовательности используются буквы от "А" до "Z" и от "а" до "z", а также цифры от "0" до "9". Национальные символы к управляющей информации не относятся.
В качестве, управляющих символов используются отдельные буквы. Перед каждым управляющим символом вводится обратная косая черта "\":
\control symbol
В настоящее время определены только некоторые из этих символов. Поэтому при чтении неизвестные символы могут быть пропущены.
В RT-формате существует возможность объединять отдельные последовательности в группы при помощи скобок:
{ начало группы
} конец группы
Такие группы создаются, например, при описании сносок, колонтитулов и т.п. Если необходимо разместить символы "\", "{" или "}" внутри обычного текста, то перед ними надлежит поставить обратную косую черту:
\\
\{
\}.
Это позволяет программе, читающей RTF-последовательность, распознать, что символ не следует интерпретировать как управляющий.
В RT-формате используются также некоторые символьные коды для управления печатью
Код Значение
09Н Табулятор
0АН Символ CR
0СН Символ LF
Символы CR и LF, расположенные внутри текста, будут пропущены. Microsoft использует эти символы для большей наглядности при представлении RTF-файла. Внутри управляющих слов символы CR и LF могут иметь особое значение, подробнее об этом будет сказано при описании команд.

Специальные управляющие слова (special control words)
В RTF имеются управляющие слова специального назначения. Ниже приведены эти слова и их назначение.

\chpgn
Управляющее слово change page number выводит текущий номер страницы.
\chftn
Управляющее слово change footnote активизирует автоматическую нумерацию сносок.
\chdate
С помощью change date можно вывести текущую дату.
\chtime
С помощью change time можно вывести текущее время.
\chatn
Ссылка на примечание (текст следует в группе).
\chftnsep
Свидетельствует об изменении линии, отделяющей сноски от текста.
\/
С помощью данной последовательности вводится текст формулы.
\:
Обозначает подпункт индекса.
\*
Текст может быть пропущен при чтении RTF-формата.
\~
Задает жесткий (неразрываемый) пробел между двумя словами, т.е. в этой позиции предложение не может быть разделено при переносе на следующую строку.
\-
Символ обозначает мягкий перенос (nonrequired hyphen).
\_
Символ обозначает неразрываемый перенос (nonbreaking hyphen), на месте которого слово не может быть разделено.
\"hh
Последовательность позволяет прямой ввод в тексте шестнадцатеричных чисел. Они задаются вместо символов hh.
\page
Данная последовательность задает переход на новую страницу.
\line
Эта последовательность вызывает переход на новую строку в тексте.
\раr
С помощью данной последовательности в тексте отмечается конец абзаца. Последовательность \раr может заменяться последовательностью \10 или \13. При этом \10 соответствует ASCII-символу с кодом 10 (carriage return). Непосредственно ввести ASCII-код 10 (CR) нельзя, т.к. он игнорируется программой чтения.
\sect
Эта последовательность обозначает конец текстового фрагмента или текстового абзаца.
\tab
Данная последовательность заменяет табулятор. Можно также непосредственно задавать ASCII-код 09Н.
\сеll
Конец таблицы (столбец).
\row
Конец таблицы (строка).

Операторы настройки (destination control words)
С помощью описанных ниже управляющих слов можно произвести основную настройку программы чтения RTF. Они могут встречаться только в начале документа или в начале группы. Все операторы вместе с параметрами должны быть заключены в скобки, например:
{\rtf0\pc.......}
Ниже описан формат некоторых операторов.

\rtf <параметр>
Задает метку начала файла. В качестве параметра программа, при помощи которой создается файл, может указывать номер версии. Например:
{\rtf0.......}
Метка должна стоять в начале файла. После этого оператора могут следовать другие операторы или закрывающая скобка.
Установка вида кодировки для сохраняемого текста осуществляется с помощью следующих операторов:
\ansi: текст хранится в стандартном ASCII-формате. Этот формат используется, например, в Windows.
\mac:. текст хранится в кодировке Macintosh
\рс: для вывода текста используется кодировка символов IBM-PC.
\рса: IBM-PC Code Page 850 (модель PS\2).
Для передачи текстов между различными системами должна использоваться кодировка \ansi.

\colortbl
Windows и другие программы пользуются палитрами для определения используемых цветов. Чаще всего палитра состоит из 16 различных цветов, получаемых путем комбинации основных цветов - красного, зеленого и синего. Команда \colortbl позволяет изменить отдельные определения в палитре. Для каждого цвета в таблице указывается величина красной, зеленой и синей составляющей. Каждый цвет описывается тремя параметрами:
\red000
\green000
\blue000
Вместо 000 указывается величина доли цвета в диапазоне от 0 до 255. Пример: в таблице, состоящей из 16 цветов, должны быть заново определены цвета 0-й и 2-й. Для переопределения цветов может быть задана следующая последовательность:
{ \colortbl \redl28\green64\bluel28\;;\red0\green64\bluel2 8; }
Определение цвета завершается точкой с запятой. Поскольку 1-й цвет остается без изменений, в последовательности два символа ";" следуют один за другим. Последовательность завершается закрывающей скобкой.
Оператор \cfn определяет цвет фона (при стандартной настройке n=0), а оператор \cbn - цвет символа (при стандартной настройке n=0).
\fonttbl
Данный оператор используется для построения таблицы шрифтов и соотносит имя шрифта (группы шрифтов) с номером шрифта. При определении шрифта можно использовать следующие операторы:
\fnil: имя группы шрифтов неизвестно. При выводе должен использоваться стандартный шрифт.
\froman: должны использоваться шрифты группы Roman (например, Times Roman)
\fswiss: этот оператор предписывает использование шрифтов из группы Swiss (Helvetica, Swiss и т.д.)
\fmodern: могут использоваться шрифты Pica, Elite и Courier.
\fscript: используются курсивные шрифты группы Script.
\fdecor: при указании этого оператора шрифты должны выбираться из группы Decor (Old English и т.д.).
\ftech: выбор группы шрифтов с техническими и математическими символами (SYMBOL и т.д.).
Команда для создания группы шрифтов может состоять из таких операторов:
{\fonttbl\f0\fnil default;}
{\fl\froman roman h;}
{\f2\fswiss helvetica;}
После ключевого слова \fonttbl следует первый номер шрифта \f0. Далее идет определение группы шрифтов. Здесь после номера 0 указано \fnil, т.е. имя группы неизвестно. Следующий параметр обозначает имя выбираемого шрифта (например, roman h). Указание default говорит считывающей программе о том, что следует использовать стандартный шрифт. После имени шрифта стоит точка с запятой. В приведенном примере определены только шрифты с номерами 1 и 2. Вся последовательность может быть объединена фигурными скобками в группу.
Таблица шрифтов должна быть заполнена значениями до того, как встретится оператор \stylesheet или текст. Стандартный шрифт вводится оператором \deffn.

\stylesheet
Этот оператор определяет шрифт абзаца, т.е. размер, начертание и имя гарнитуры, а также способ выравнивания текста абзаца. При этом используются два ключевых параметра:
\sbasedon000: вместо символов 000 указывается номер вида шрифта, который используется в качестве текущего.
\snext000: назначает номер следующего вида шрифта (style), который - станет текущим.
Оператор может иметь, например, следующий вид:
{\stylesheet\s0\f3\fs20\qj Normal;}
{\sl\f3\fs30\b\qc Heading Level 3;}
Шрифты нумеруются числами от 0 до n (\s0...). В первой строке стилю абзаца 0 (\s0) предписывается имя Normal. Вывод текста выполняется шрифтом 3 (\f3), размером 10 пунктов (\fs20). Параметр \qj говорит о том, что надпись должна выравниваться по формату. Вторая строка определяет стиль шрифта 1, который получает имя Heading Level 3. Шрифт имеет размер 15 пунктов, жирное начертание (\Ь = bold) и при выводе надпись центрируется (\qc).

\pict
Этот оператор используется при описании рисунка в формате битовой карты (bitmap). Следующие параметры содержат описание рисунка в виде шестнадцатеричных значений. Параметры могут быть выборочно использованы для определения геометрии рисунка или его формата:
\pich000: оператор указывает высоту рисунка в пикселях. Вместо трех нулей подставляется числовое значение. Если оператор отсутствует, высота рисунка определяется из текущих графических данных. С помощью параметра можно задать для рисунка определенную высоту.
\piw000: оператор задает ширину рисунка в пикселях. Справедливо все, сказанное о предыдущем операторе.
\picscaled: с помощью этого оператора рисунок масштабируется таким образом, чтобы он точно заполнял отведенную для него область.
\ wmetafilen: параметр указывает, что данные хранятся в формате Windows-метафайла. Параметр n определяет тип метафайла (1 = ММ-текст).
\macpict: параметр указывает, что данные хранятся в Macintosh-формате Quick-Draw.
\bin000:. параметр определяет количество байтов. Вместо трех нулей записывается шестнадцатеричное число.
\wbitmapn: параметр определяет формат bitmap-рисунка. Параметр n задает тип (0 соответствует логической битовой карте).
\brdrs: определяет простую рамку для рисунка
\brdrdb: определяет двойную рамку для рисунка.
\brdrth: определяет жирную линию для рамки рисунка.
\brdrsh: определяет затененную рамку для рисунка
\brdrdot: определяет для рисунка пунктирную линию.
\brdrhair: определяет тонкую линию для рамки рисунка.
\picwGoaln: задает желаемую ширину рисунка в twips
\pichGoaln: задает желаемую высоту рисунка в twips.
\picscalexn: задает горизонтальное масштабирование (n может принимать значения от 1 до 100, по умолчанию -10).
\picscaleyn: задает вертикальное масштабирование (n может принимать значения от 1 до 100, по умолчанию - 10).
\piccroptn: описывает верхнее поле рисунка в twips. При положительных значениях параметра n верхняя часть рисунка обрезается. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.
\рiccrорbп: описывает нижнее поле рисунка в twips. При положительных значениях параметра n нижняя часть рисунка обрезается. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.
\рiссrорrn: описывает правое поле рисунка в twips. При положительных значениях параметра n рисунок обрезается справа. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.
\piccropln: описывает левое поле рисунка в twips. При положительных значениях параметра п рисунок обрезается слева. Отрицательные значения п дают возможность построить вокруг рисунка рамку. Стандартное значение п равно 0.
\wbmbitspixeln: определяет количество битов, приходящихся на пиксел, для bitmap-рисунка (стандартное значение равно 1).
\ wbmplanesn: определяет количество битовых плоскостей (стандартное значение равно 1).
\wbmwidtbbytesn: определяет длину битовой карты в байтах.

\footnote
Оператор должен следовать непосредственно после отметки сноски и относиться к тексту.

\header
Оператор определяет верхний колонтитул текущего фрагмента текста и поэтому должен указываться в начале текста.

\headerl
Оператор определяет верхний колонтитул четной страницы (left hand header), на которой колонтитул выводится с выравниванием влево.

\headerr
Оператор устанавливает верхний колонтитул нечетной страницы, на которой колонтитул выводится с выравниванием вправо (right hand header).

\headerf
Оператор устанавливает верхний колонтитул первой страницы (first page header).

\footer
Оператор устанавливает нижний колонтитул текущего фрагмента и должен указываться перед началом текста.

\footerl
Оператор устанавливает нижний колонтитул четной страницы (left hand footer), на которой колонтитул выводится с выравниванием влево.

\footerr
Оператор устанавливает нижний колонтитул нечетной страницы, на которой он выводится с левосторонним выравниванием (right hand footer).

\footerf
Оператор устанавливает нижний колонтитул первой страницы (first page footer).

\ftnsep
Оператор определяет символ-разделитель для сносок.

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

\ftncn
Этот оператор применяется для обозначения продолжения текста сноски.

\info
С помощью данного ключевого слова в начале документа открывается информационный блок. Он может содержать информацию о заголовке документа, дате его составления и т.д. Внутри информационного блока, который начинается оператором \info, могут встречаться следующие операторы:
\title
\subject
\operator
\author
\keywords
\doccomm
\version
\nextfile
Перечисленные команды позволяют передавать вспомогательную информацию о документе, например, имя автора, версию текста, заголовок и т.д. Программа чтения RTF-данных не обязана обрабатывать команды информационного блока.

\vern000
Вместо 000 в операторе записывается номер версии программы, в которой составлен документ.

\creatim
С помощью данного ключевого слова определяется дата и время создания документа. Эти данные кодируются с помощью таких операторов:
\уr000: год создания документа
\то000: месяц создания документа
\dy000: день создания документа
\hr000: время создания документа в часах
\min000: время создания документа в минутах
\sec000: время создания документа в секундах

\revtim
Определяет время и дату последней корректировки документа. Оба параметра задаются так, как указано в описании оператора \creatim.

\printtim
Определяет время и дату последней распечатки документа. Оба параметра задаются так, как указано в описании оператора \creatim.

\buptim
Определяет время и дату последнего сохранения документа (backup). Оба параметра задаются так, как указано в описании оператора \creatim.

\edmins000
Хранит длительность (в минутах) последнего сеанса редактирования.

\nofpages000
\nofwords000
\nofchars000
\id000
Вышеуказанные операторы содержат уточняющую информацию о документе (количество страниц, количество слов и количество символов), а также внутренний идентификационный номер.

\comment
В заголовке может встретиться текст, помеченный ключевым словом \comment. В этом случае речь идет о комментарии в тексте, который пропускается программой чтения данных в RTF-формате.

\field
Имеется группа операторов, при помощи которых описываются поля, вставляемые в WORD. Группа начинается ключевым словом \field, за которым могут следовать такие операторы:
\flddirty: поле было изменено во время последней актуализации
\fldedit: текст был отредактирован во время последней актуализации
\fldlock: поле закрыто для доступа и не может быть актуализировано
\fldpriv: результат не сообщается (например, рисунок)

\xe
Эта группа операторов начинается последовательностью символов \xe и может содержать следующие ключевые слова:
\bхе: для номеров страниц задается жирное начертание (bold).
\ixe: для номеров страниц задается курсивное начертание (italic).
\txe text: вместо номера страницы используется текст.
\rхе bookmark: генерация номеров страниц для области, содержащей закладку (bookmark).

\tc
Группа содержит элементы данных для таблиц и может состоять из следующих ключевых слов:
\tcfn: передается тип таблицы (n может иметь значения от А до Z, значение по умолчанию - С).
\tcln: номер уровня (стандартное значение n = 1).

В группу операторов, определяющих закладки, входят только два оператора:
\*\bkmkstart: начало области
\*\bkmkend: конец области

Операторы форматирования (document formatting)
В следующую группу входят команды для форматирования текста. Эти команды могут быть разделены на подгруппы:
· команды, действие которых распространяется на весь текст,
· команды, изменяющие формат только текущего абзаца,
· команды, которые относятся к текущему выводу текста.
В этом разделе описываются операторы форматирования всего документа.

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

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

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

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

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

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

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

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

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

\widowctrl
Оператор включает wido-контроль. Если за оператором следует параметр 0, то контроль снова отключается.

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

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

\ftntj
Тексты сносок выводятся в тексте (footnotes top justified).

\ftnstart000
Вместо 000 команда содержит начальный номер первой сноски. Стандартное значение номера равно 1.

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

\pgnstart000
Вместо 000 команда содержит номер начальной страницы. Стандартное значение номера равно 1.

\linestart000
Значение, указанное вместо 000, задает номер начальной строки. Стандартное значение номера равно 1.

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

\byphhotz
Определяет область, которая обозначается как - Hyphenation hot zone.

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

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

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

\enddoc
Сноска в конце документа.

\*\nextfile
Передает (в скобках {}) имя файла вывода или индексного файла.

\*\template
После оператора в скобках {} указано имя файла шаблона (template), если оно отличается от принятого по умолчанию.

\makeback
Автоматическое создание Backup-файла, если документ защищен.

\defformat
Сообщает программе чтения RTF-данных о том, что документ должен быть защищен.

\revison
Включает отметку об изменениях.

\margmirror
Указывает на необходимость зеркально отобразить описания для левого и правого полей.

\rеvрrорn
Значение параметра n задает начертание и способ выделения символов при создании редакторских примечаний. Значение n, равное 0, соответствует нормальному начертанию, 1 - жирному, 2 - курсиву, 3 - подчеркиванию (стандартная настройка), 4 - двойному подчеркиванию.

\rеvbаrn
В зависимости от значения параметра n, задается способ выделения вертикальными линиями текста редакторских примечаний: 0 - не отмечается, 1 - отмечается левый край текста, 2 - отмечается правый край текста, 3 - отметка располагается за пределами текста (стандартная настройка) по краю страницы.

Форматирование секции (section formatting)
Вторая группа операторов управляет форматом секции (section) и состоит из следующих команд.

\sectd
Оператор устанавливает стандартную настройку параметров секции.

\sbknone
Оператор подавляет переход на новую страницу перед началом секции (section break continuous).

\sbkcol
При указании этой команды в начале секции осуществляется переход на новую колонку (section break new column).

\sbkpage
При указании этой команды (section break new page) в начале секции происходит переход к новой странице.

\sbkeven
При указании этой команды в начале секции выполняется переход к новой странице, если номер страницы четный (section break even).

\sbkodd
При указании этой команды в начале секции выполняется переход к новой странице, если номер страницы нечетный (section break odd).

\pgostartsn
Нумерация страниц начинается с номера n.

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

\pgndec
Номера страниц выводятся в десятичном формате.

\pgnucrm
Номера страниц выводятся большими римскими цифрами (upper case roman).

\pgnlcrm
Номера страниц выводятся маленькими римскими цифрами (lower case roman).

\pgncont
Сквозная нумерация страниц (стандартная настройка).

\pgnucltr
Номера страниц выводятся прописными символами (upper case letter).

\pgnlcltr
Номера страниц выводятся строчными символами (lower case letter).

\pgnx000
С помощью этой команды задается X-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips.

\pgny000
С помощью этой команды задается Y-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips.

\linemod000
Оператор устанавливает величину интервала при нумерации строк.

\linex000
Оператор устанавливает расстояние между строками. По умолчанию оно равно 360 twips.

\linestartn
Нумерация строк начинается со значения n.

\linerestart
Возвращает номер строки к значению 1. Команда устанавливает, что нумерация строк начинается с 1.

\linepage
На каждой странице нумерация строк начинается со значения 1.

\linecont
Нумерация строк продолжается с предыдущей секции (предыдущей главы).

\headery000
Команда задает Y-координату верхнего колонтитула. Значение указывается относительно верхнего края страницы и по умолчанию принимается равным 720 twips.

\footery000
Команда задает Y-координату нижнего колонтитула. Значение указывается относительно нижнего края страницы и по умолчанию принимается равным 720 twips.

\vertalt
Текст по вертикали выравнивается к верхнему краю страницы. Текст располагается в верхней части страницы (vertically align at top of page).

\vertalc
Текст размещается посредине страницы. Вертикальное выравнивание текста выполняется по центру страницы (vertical align centered).

\vertalj
Текст по вертикали размещается так, чтобы заполнить всю страницу (vertical align justified).

\vertalb
Вертикальное выравнивание текста выполняется по нижнему краю страницы (vertical align bottom).

\cols000
С помощью этой команды можно задать количество столбцов в строке. Стандартное значение равно 1.

\colsx000
С помощью этой команды устанавливается расстояние между двумя столбцами в twips. Стандартное значение равно 720 twips.

\endnhere
При указании этого оператора послетекстовые сноски выводятся в конце секции. Такой вывод можно подавить путем задания параметра 0.

\titlepg
Оператор задает вывод титульной страницы. Параметр 0 подавляет вывод титульной страницы.

Форматирование абзаца (paragraph formatting)
Следующие команды управляют форматированием абзаца (paragraph).
\pard
Оператор устанавливает стандартную настройку для абзаца.

\s000
Команда определяет шрифт для данного абзаца. С помощью подставляемого вместо 000 значения осуществляется выбор в таблице шрифтов.

\ql
При задании команды quad left текст выравнивается по левому краю страницы.

\qr
При задании команды quad right текст выравнивается по правому краю страницы.

\qc
При задании команды quad centered текст размещается по центру страницы.

\qj
При задании команды quad justified текст выравнивается по формату страницы.

\fi000
Оператор определяет величину отступа первой строки абзаца (first line indent). Стандартное значение равно 0.

\li000
Оператор определяет величину втяжки абзаца слева (left indent). Стандартное значение равно 0.

\ri000
Оператор определяет величину втяжки абзаца справа (right indent). Стандартное значение равно 0.

\sb000
Оператор задает количество пустых строк, вставляемых перед абзацем (spaces before). Стандартное значение равно 0.

\sa000
Оператор задает количество пустых строк, вставляемых после абзаца (spaces after). Стандартное значение равно 0.

\sl000
Команда устанавливает расстояние между строками в пунктах. Стандартное значение равно одной строке (12 пунктам). Команда \sl000 включает auto line mode.

\intbl
Абзац является частью некоторой таблицы.

\keep
При указании этой команды фиксируется принадлежность текста к текущему абзацу. Команда отключается указанием параметра 0.

\kеерn
При указании этой команды текст ставится в соответствие следующему (next) абзацу. Команда отключается указанием параметра 0.

\sbys
Указанием этого оператора может быть включен режим side by side. При задании параметра 0 режим отключается.

\pagebb
Указанием этого оператора может быть включена команда page break before. При задании параметра 0 команда отключается.

\nоlinе
При задании этой команды отключается нумерация строк. Указание параметра 0 подавляет команду.

\brdrt
Задает линию над абзацем (boarder top).

\brdrb
Задает линию под абзацем (boarder bottom)..

\brdrl
Задает линию слева от абзаца (boarder left).

\brdrr
Задает линию справа от абзаца (boarder right).

\box
Задает рамку вокруг абзаца.

\brdrs
Задает нормальную линию (single thickness) для рамки.

\brdrtb
Задается толстую (thick) линию для рамки.

\brdsu
Задает оттененную рамку (boarder).

\brdrdb
Задается двойную рамку (boarder).

\brdrdot
Рамка обозначается пунктирной линией.

\brdrbair
Рамка обозначается тонкой линией.

\brspn
Расстояние в twips между рамкой и объектом.

\tqr
Обозначает табулятор, относительно которого текст выравнивается вправо (right flush tab).

\tgc
Обозначает табулятор, относительно которого текст выравнивается по центру (centered tab).

\tqdec
Обозначает десятичный табулятор (decimal aligned tab).

\tldot
Обозначает табулятор, для которого пустое пространство заполняется точками (tab leader dot).

\tibypben
Обозначает табулятор, для которого пустое пространство заполняется дефисами (tab leader hyphen).

\tlul
Обозначает табулятор, для которого пустое пространство заполняется символами подчеркивания (tab leader underline).

\tith
Обозначает табулятор, для которого пустое пространство заполняется жирной
чертой (tab leader thick line). \

\tx000
С помощью этой команды задается положение табулятора.

\tb000
С помощью команды задается положение вертикального табулятора. При этом по всей длине текущего абзаца проводится вертикальная линия.

Следующие команды позволяют разместить абзац в определенной позиции листа.
\posxn
Позиционирует абзац на расстоянии n twips от левого края.

\posxc
Абзац по горизонтали размещается по центру относительно указанного элемента (страницы, колонки).

\posxi
Абзац по горизонтали размещается внутри указанного элемента.

\posxl
Абзац по горизонтали размещается слева относительно указанного элемента.

\posxo
Абзац по горизонтали размещается вне указанного элемента.

\posxr
Абзац по горизонтали размещается справа относительно указанного элемента.

\posysi
Позиционирует абзац на расстоянии "n" twips от верхнего края.

\posyil
Позиционирует абзац в текущей позиции (inline).

\posyt
Абзац по вертикали размещается в верхней части указанного элемента (страницы, колонки).

\posyc
Абзац по вертикали размещается в центре указанного элемента.

\posyb
Абзац по вертикали размещается в нижней части указанного элемента.

\abswn
Абсолютная ширина текста абзаца в twips.

\dxfrtextn
Расстояние в twips по горизонтали между основным текстом и абсолютно позиционированным объектом (рамкой с текстом или рисунком).

\pvmrg
Позиция по вертикали относительно полей.

\pvpg
Позиция по вертикали относительно страницы.

\phmrg
Позиция по горизонтали относительно полей.

\рhpg
Позиция по горизонтали относительно страницы.

\рhсоl
Позиция по горизонтали относительно столбца.

Для форматирования таблиц определены следующие команды.
\clbrdrb
Нижний край таблицы.

\clbrdrt
Верхний край таблицы.

\clbrdrl
Левый край таблицы.

\clbrdrr
Правый край таблицы.

\trowd
Устанавливает стандартные значения строк таблицы.

\trql
Левостороннее выравнивание при размещении строк таблицы (с учетом столбцов).

\trqr
Правостороннее выравнивание при размещении строк таблицы (с учетом столбцов).

\trqc
Центрирование строк таблицы (с учетом столбцов).

\trgapho
Половина расстояния между ячейками таблицы (в twips).

\trrbn
Высота строки в twips.

\trleftm
Расположение левого угла таблицы.

\cellxn
Смещение правой границы таблицы.

\clmgf
Объединение (merge) первой ячейки с остальными ячейками таблицы.

\clmrg
Объединение ячейки с предыдущей ячейкой.

Форматирование символов (character formatting)
Данная группа операторов используется для форматирования символов (жирное начертание, подчеркивание и т.д.).

\plain
С помощью этой команды устанавливаются стандартные параметры форматирования.

\b
Установка жирного начертания (bold) для печатаемого текста. Для отмены необходимо указать параметр 0.

\i
Задание курсивного начертания (italic) для печатаемого текста. Установка отменяется указанием параметра 0.

\strike
Печатаемый текст будет зачеркнутым (strikethrough). Для отмены следует выбрать параметр 0.

\outl
Установка контурного шрифта (outline) для печатаемого текста. Для отмены надлежит выбрать параметр 0.

\shad
Печатаемый текст будет оттенен. Для отмены необходимо установить параметр 0.

\scaps
Установка печати текста строчными буквами (small caps). Для отмены нужно выбрать параметр 0.

\caps
Установка печати текста прописными и строчными буквами. Для отмены необходимо выбрать параметр 0.

\v
Печатаемый текст будет заменен пробелами (invisible). Для отмены следует установить параметр 0.

\f000
Установка настройки шрифта с указанием в качестве параметра номера фонта.

\fs000
Оператор в качестве параметра содержит высоту символов, заданную в единицах по 1/2 пункта. Стандартное значение высоты равно 24 единицам (12 пунктам).

\expnd000
Параметр позволяет изменить расстояние между символами путем указания количества интервалов величиной по 1/4 пункта каждый.

\ul
Установка режима подчеркивания текста. Для отмены необходимо выбрать параметр 0.

\ulw
Оператор позволяет задать подчеркивание только слов.

\uld
Задание пунктирного подчеркивания текста (dotted underline).

\uldb
Установка режима двойного подчеркивания текста (double underline).

\ulnone
Отмена подчеркивания текста.

\up000
Установка режима надстрочного написания символов (superscript). Размер задается в единицах 1/2 пункта.

\dn000
Установка режима подстрочного написания символов (subscript). Размер задается в единицах 1/2 пункта.

\cf000
Указание номера цвета в палитре.

\сb000
Задание цвета фона путем указания номера в палитре.

Последующие версии RT-формата могут быть дополнены новыми командами. Если программа не распознает команду, то она может быть пропущена. Конец каждой команды отмечается одним из описанных выше разделяющих символов (чаще всего -точкой с запятой).

Спецификация формата RTF

Данный формат был определен фирмой Microsoft как стандартный формат для обмена текстовыми документами. Следовательно, по назначению этот формат подобен 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

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

    Пробел (space) , причем этот символ относится к управляющему слову;

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

    Все символы, отличные от цифр и букв. Эти символы не относятся к управляющему слову.

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

control symbol

В настоящее время определены только некоторые из этих символов. Поэтому при чтении неизвестные символы могут быть пропущены. В RT-формате существует возможность объединять отдельные последовательности в группы при помощи скобок:

{ начало группы } конец группы

Такие группы создаются, например, при описании сносок, колонтитулов и т.п. Если необходимо разместить символы "", "{ " или "} " внутри обычного текста, то перед ними надлежит поставить обратную косую черту:

{ }

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

Значение

Табулятор

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

Специальные управляющие слова (special control words) В RTF имеются управляющие слова специального назначения. Рассмотрим кратко эти слова и их назначение.

chpgn Управляющее слово change page number выводит текущий номер страницы.

chftn Управляющее слово change footnote активизирует автоматическую нумерацию сносок.

chdate С помощью change date можно вывести текущую дату.

chtime С помощью change time можно вывести текущее время.

chftnsep Свидетельствует об изменении линии, отделяющей сноски от текста.

/ С помощью данной последовательности вводится текст формулы.

: Обозначает подпункт индекса.

* Текст может быть пропущен при чтении RTF-формата.

~ Задает жесткий (неразрываемый) пробел между двумя словами, т.е. в этой позиции предложение не может быть разделено при переносе на следующую строку.

- Символ обозначает мягкий перенос (nonrequired hyphen).

_ Символ обозначает неразрываемый перенос (nonbreaking hyphen), на месте которого слово не может быть разделено.

""hh Последовательность позволяет прямой ввод в тексте шестнадцатеричных чисел. Они задаются вместо символов hh.

page Данная последовательность задает переход на новую страницу.

line Эта последовательность вызывает переход на новую строку в тексте.

раr С помощью данной последовательности в тексте отмечается конец абзаца. Последовательность раr может заменяться последовательностью10 или13 . При этом 10 соответствует ASCII-символу с кодом 10 (carriage return). Непосредственно ввести ASCII-код 10 (CR) нельзя, т.к. он игнорируется программой чтения.

sect Эта последовательность обозначает конец текстового фрагмента или текстового абзаца.

tab Данная последовательность заменяет табулятор. Можно также непосредственно задавать ASCII-код 09Н.

сеll Конец таблицы (столбец).

row Конец таблицы (строка).

Операторы настройки (destination control words) С помощью описанных ниже управляющих слов можно произвести основную настройку программы чтения RTF. Они могут встречаться только в начале документа или в начале группы. Все операторы вместе с параметрами должны быть заключены в скобки, например:

{rtf0pc.......}

Ниже описан формат некоторых операторов.

rtf <параметр> Задает метку начала файла. В качестве параметра программа, при помощи которой создается файл, может указывать номер версии. Например:

{rtf0.......}

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

текст хранится в стандартном ASCII-формате. Этот формат используется, например, в Windows.

текст хранится в кодировке Macintosh.

для вывода текста используется кодировка символов IBM-PC.

IBM-PC Code Page 850 (модель PS2).

Для передачи текстов между различными системами должна использоваться кодировка ansi .

colortbl Windows и другие программы пользуются палитрами для определения используемых цветов. Чаще всего палитра состоит из 16 различных цветов, получаемых путем комбинации основных цветов - красного, зеленого и синего. Команда colortbl позволяет изменить отдельные определения в палитре. Для каждого цвета в таблице указывается величина красной, зеленой и синей составляющей. Каждый цвет описывается тремя параметрами:

red000 green000 blue000

Вместо 000 указывается величина доли цвета в диапазоне от 0 до 255. Пример: в таблице, состоящей из 16 цветов, должны быть заново определены цвета 0-й и 2-й. Для переопределения цветов может быть задана следующая последовательность:

{ colortbl redl28green64bluel28;;red0green64bluel2 8; }

Определение цвета завершается точкой с запятой. Поскольку 1-й цвет остается без изменений, в последовательности два символа "; " следуют один за другим. Последовательность завершается закрывающей скобкой. Операторcfn определяет цвет фона (при стандартной настройке n=0), а операторcbn - цвет символа (при стандартной настройке n=0).

fonttbl Данный оператор используется для построения таблицы шрифтов и соотносит имя шрифта (группы шрифтов) с номером шрифта. При определении шрифта можно использовать следующие операторы:

имя группы шрифтов неизвестно. При выводе должен использоваться стандартный шрифт.

должны использоваться шрифты группы Roman (например, Times Roman).

этот оператор предписывает использование шрифтов из группы Swiss (Helvetica, Swiss и т.д.)

могут использоваться шрифты Pica, Elite и Courier.

используются курсивные шрифты группы Script.

при указании этого оператора шрифты должны выбираться из группы Decor (Old English и т.д.).

выбор группы шрифтов с техническими и математическими символами (SYMBOL и т.д.).

Команда для создания группы шрифтов может состоять из таких операторов:

{fonttblf0fnil default;} {flfroman roman h;} {f2fswiss helvetica;}

После ключевого слова fonttbl следует первый номер шрифтаf0 . Далее идет определение группы шрифтов. Здесь после номера 0 указаноfnil , т.е. имя группы неизвестно. Следующий параметр обозначает имя выбираемого шрифта (например,roman h ). Указаниеdefault говорит считывающей программе о том, что следует использовать стандартный шрифт. После имени шрифта стоит точка с запятой. В приведенном примере определены только шрифты с номерами 1 и 2. Вся последовательность может быть объединена фигурными скобками в группу. Таблица шрифтов должна быть заполнена значениями до того, как встретится операторstylesheet или текст. Стандартный шрифт вводится операторомdeffn .

stylesheet Этот оператор определяет шрифт абзаца, т.е. размер, начертание и имя гарнитуры, а также способ выравнивания текста абзаца. При этом используются два ключевых параметра:

sbasedon000 вместо символов 000 указывается номер вида шрифта, который используется в качестве текущего.

snext000 назначает номер следующего вида шрифта (style), который - станет текущим. Оператор может иметь, например, следующий вид:

{stylesheets0f3fs20qj Normal;} {slf3fs30bqc Heading Level 3;}

Шрифты нумеруются числами от 0 до n (s0 ...). В первой строке стилю абзаца 0 (s0) предписывается имя Normal. Вывод текста выполняется шрифтом 3 (f3), размером 10 пунктов (fs20). Параметр qj говорит о том, что надпись должна выравниваться по формату. Вторая строка определяет стиль шрифта 1, который получает имя Heading Level 3. Шрифт имеет размер 15 пунктов, жирное начертание (b = bold) и при выводе надпись центрируется (qc).

pict Этот оператор используется при описании рисунка в формате битовой карты (bitmap). Следующие параметры содержат описание рисунка в виде шестнадцатеричных значений. Параметры могут быть выборочно использованы для определения геометрии рисунка или его формата:

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

оператор задает ширину рисунка в пикселях. Справедливо все, сказанное о предыдущем операторе.

с помощью этого оператора рисунок масштабируется таким образом, чтобы он точно заполнял отведенную для него область.

параметр указывает, что данные хранятся в формате Windows-метафайла. Параметр n определяет тип метафайла (1 = ММ-текст).

параметр указывает, что данные хранятся в Macintosh-формате Quick-Draw.

параметр определяет количество байтов. Вместо трех нулей записывается шестнадцатеричное число.

параметр определяет формат bitmap-рисунка. Параметр n задает тип (0 соответствует логической битовой карте).

определяет простую рамку для рисунка

определяет двойную рамку для рисунка.

определяет жирную линию для рамки рисунка.

определяет затененную рамку для рисунка

определяет для рисунка пунктирную линию.

определяет тонкую линию для рамки рисунка.

задает желаемую ширину рисунка в twips

задает желаемую высоту рисунка в twips.

задает горизонтальное масштабирование (n может принимать значения от 1 до 100, по умолчанию - 10).

задает вертикальное масштабирование (n может принимать значения от 1 до 100, по умолчанию - 10).

описывает верхнее поле рисунка в twips. При положительных значениях параметра n верхняя часть рисунка обрезается. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.

описывает нижнее поле рисунка в twips. При положительных значениях параметра n нижняя часть рисунка обрезается. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.

описывает правое поле рисунка в twips. При положительных значениях параметра n рисунок обрезается справа. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.

описывает левое поле рисунка в twips. При положительных значениях параметра n рисунок обрезается слева. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.

определяет количество битов, приходящихся на пиксел, для bitmap-рисунка (стандартное значение равно 1).

определяет количество битовых плоскостей (стандартное значение равно 1).

определяет длину битовой карты в байтах.

footnote Оператор должен следовать непосредственно после отметки сноски и относиться к тексту.

header Оператор определяет верхний колонтитул текущего фрагмента текста и поэтому должен указываться в начале текста.

headerl Оператор определяет верхний колонтитул четной страницы (left hand header), на которой колонтитул выводится с выравниванием влево.

headerr Оператор устанавливает верхний колонтитул нечетной страницы, на которой колонтитул выводится с выравниванием вправо (right hand header).

headerf Оператор устанавливает верхний колонтитул первой страницы (first page header).

footer Оператор устанавливает нижний колонтитул текущего фрагмента и должен указываться перед началом текста.

footerl Оператор устанавливает нижний колонтитул четной страницы (left hand footer), на которой колонтитул выводится с выравниванием влево.

footerr Оператор устанавливает нижний колонтитул нечетной страницы, на которой он выводится с левосторонним выравниванием (right hand footer).

footerf Оператор устанавливает нижний колонтитул первой страницы (first page footer).

ftnsep Оператор определяет символ-разделитель для сносок.

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

ftncn Этот оператор применяется для обозначения продолжения текста сноски.

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

title subject operator author keywords doccomm version nextfile Перечисленные команды позволяют передавать вспомогательную информацию о документе, например, имя автора, версию текста, заголовок и т.д. Программа чтения RTF-данных не обязана обрабатывать команды информационного блока.

vern000 Вместо 000 в операторе записывается номер версии программы, в которой составлен документ.

creatim С помощью данного ключевого слова определяется дата и время создания документа. Эти данные кодируются с помощью таких операторов:

уr000 год создания документа

то000 месяц создания документа

dy000 день создания документа

hr000 время создания документа в часах

min000 время создания документа в минутах

sec000 время создания документа в секундах

revtim Определяет время и дату последней корректировки документа. Оба параметра задаются так, как указано в описании оператора creatim.

printtim Определяет время и дату последней распечатки документа. Оба параметра задаются так, как указано в описании оператора creatim.

buptim Определяет время и дату последнего сохранения документа (backup). Оба параметра задаются так, как указано в описании оператора creatim.

edmins000 Хранит длительность (в минутах) последнего сеанса редактирования.

nofpages000 nofwords000 nofchars000 id000 Вышеуказанные операторы содержат уточняющую информацию о документе (количество страниц, количество слов и количество символов), а также внутренний идентификационный номер.

comment В заголовке может встретиться текст, помеченный ключевым словом comment. В этом случае речь идет о комментарии в тексте, который пропускается программой чтения данных в RTF-формате.

field Имеется группа операторов, при помощи которых описываются поля, вставляемые в WORD. Группа начинается ключевым словом field, за которым могут следовать такие операторы:

flddirty поле было изменено во время последней актуализации

fldedit текст был отредактирован во время последней актуализации

fldlock поле закрыто для доступа и не может быть актуализировано

fldpriv результат не сообщается (например, рисунок)

xe Эта группа операторов начинается последовательностью символов xe и может содержать следующие ключевые слова:

bхе для номеров страниц задается жирное начертание (bold).

ixe для номеров страниц задается курсивное начертание (italic).

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

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

tc Группа содержит элементы данных для таблиц и может состоять из следующих ключевых слов:

tcfn передается тип таблицы (n может иметь значения от А до Z, значение по умолчанию - С).

tcln номер уровня (стандартное значение n = 1). В группу операторов, определяющих закладки, входят только два оператора:

*bkmkstart начало области

*bkmkend конец области

Операторы форматирования (document formatting) В следующую группу входят команды для форматирования текста. Эти команды могут быть разделены на подгруппы:

    команды, действие которых распространяется на весь текст,

    команды, изменяющие формат только текущего абзаца,

    команды, которые относятся к текущему выводу текста.

В этом разделе описываются операторы форматирования всего документа.

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

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

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

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

margt000 С помощью этой команды можно установить ширину верхнего поля (margin top) при печати в twips. Стандартная ширина поля равна 1440 twips.

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

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

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

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

widowctrl Оператор включает wido-контроль. Если за оператором следует параметр 0, то контроль снова отключается.

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

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

ftntj Тексты сносок выводятся в тексте (footnotes top justified).

ftnstart000 Вместо 000 команда содержит начальный номер первой сноски. Стандартное значение номера равно 1.

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

pgnstart000 Вместо 000 команда содержит номер начальной страницы. Стандартное значение номера равно 1.

linestart000 Значение, указанное вместо 000, задает номер начальной строки. Стандартное значение номера равно 1.

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

byphhotz Определяет область, которая обозначается как - Hyphenation hot zone.

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

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

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

enddoc Сноска в конце документа.

*nextfile Передает (в скобках {}) имя файла вывода или индексного файла.

*template После оператора в скобках {} указано имя файла шаблона (template), если оно отличается от принятого по умолчанию.

makeback Автоматическое создание Backup-файла, если документ защищен.

defformat Сообщает программе чтения RTF-данных о том, что документ должен быть защищен.

revison Включает отметку об изменениях.

margmirror Указывает на необходимость зеркально отобразить описания для левого и правого полей.

rеvрrорn Значение параметра n задает начертание и способ выделения символов при создании редакторских примечаний. Значение n, равное 0, соответствует нормальному начертанию, 1 - жирному, 2 - курсиву, 3 - подчеркиванию (стандартная настройка), 4 - двойному подчеркиванию.

rеvbаrn В зависимости от значения параметра n, задается способ выделения вертикальными линиями текста редакторских примечаний: 0 - не отмечается, 1 - отмечается левый край текста, 2 - отмечается правый край текста, 3 - отметка располагается за пределами текста (стандартная настройка) по краю страницы.

Форматирование секции (section formatting) Вторая группа операторов управляет форматом секции (section) и состоит из следующих команд.

sectd Оператор устанавливает стандартную настройку параметров секции.

sbknone Оператор подавляет переход на новую страницу перед началом секции (section break continuous).

sbkcol При указании этой команды в начале секции осуществляется переход на новую колонку (section break new column).

sbkpage При указании этой команды (section break new page) в начале секции происходит переход к новой странице.

sbkeven При указании этой команды в начале секции выполняется переход к новой странице, если номер страницы четный (section break even).

sbkodd При указании этой команды в начале секции выполняется переход к новой странице, если номер страницы нечетный (section break odd).

pgostartsn Нумерация страниц начинается с номера n.

pgnrestart Команда устанавливает временную нумерацию страниц, начиная со значения 1. Параметр 0 восстанавливает прежний порядок нумерации.

pgndec Номера страниц выводятся в десятичном формате.

pgnucrm Номера страниц выводятся большими римскими цифрами (upper case roman).

pgnlcrm Номера страниц выводятся маленькими римскими цифрами (lower case roman).

pgncont Сквозная нумерация страниц (стандартная настройка).

pgnucltr Номера страниц выводятся прописными символами (upper case letter).

pgnlcltr Номера страниц выводятся строчными символами (lower case letter).

pgnx000 С помощью этой команды задается X-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips.

pgny000 С помощью этой команды задается Y-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips.

linemod000 Оператор устанавливает величину интервала при нумерации строк.

linex000 Оператор устанавливает расстояние между строками. По умолчанию оно равно 360 twips.

linestartn Нумерация строк начинается со значения n.

linerestart Возвращает номер строки к значению 1. Команда устанавливает, что нумерация строк начинается с 1.

linepage На каждой странице нумерация строк начинается со значения 1.

linecont Нумерация строк продолжается с предыдущей секции (предыдущей главы).

headery000 Команда задает Y-координату верхнего колонтитула. Значение указывается относительно верхнего края страницы и по умолчанию принимается равным 720 twips.

footery000 Команда задает Y-координату нижнего колонтитула. Значение указывается относительно нижнего края страницы и по умолчанию принимается равным 720 twips.

vertalt Текст по вертикали выравнивается к верхнему краю страницы. Текст располагается в верхней части страницы (vertically align at top of page).

vertalc Текст размещается посредине страницы. Вертикальное выравнивание текста выполняется по центру страницы (vertical align centered).

vertalj Текст по вертикали размещается так, чтобы заполнить всю страницу (vertical align justified).

vertalb Вертикальное выравнивание текста выполняется по нижнему краю страницы (vertical align bottom).

cols000 С помощью этой команды можно задать количество столбцов в строке. Стандартное значение равно 1.

colsx000 С помощью этой команды устанавливается расстояние между двумя столбцами в twips. Стандартное значение равно 720 twips.

endnhere При указании этого оператора послетекстовые сноски выводятся в конце секции. Такой вывод можно подавить путем задания параметра 0.

titlepg Оператор задает вывод титульной страницы. Параметр 0 подавляет вывод титульной страницы.

Форматирование абзаца (paragraph formatting) Следующие команды управляют форматированием абзаца (paragraph).

pard Оператор устанавливает стандартную настройку для абзаца.

s000 Команда определяет шрифт для данного абзаца. С помощью подставляемого вместо 000 значения осуществляется выбор в таблице шрифтов.

ql При задании команды quad left текст выравнивается по левому краю страницы.

qr При задании команды quad right текст выравнивается по правому краю страницы.

qc При задании команды quad centered текст размещается по центру страницы.

qj При задании команды quad justified текст выравнивается по формату страницы.

fi000 Оператор определяет величину отступа первой строки абзаца (first line indent). Стандартное значение равно 0.

li000 Оператор определяет величину втяжки абзаца слева (left indent). Стандартное значение равно 0.

ri000 Оператор определяет величину втяжки абзаца справа (right indent). Стандартное значение равно 0.

sb000 Оператор задает количество пустых строк, вставляемых перед абзацем (spaces before). Стандартное значение равно 0.

sa000 Оператор задает количество пустых строк, вставляемых после абзаца (spaces after). Стандартное значение равно 0.

sl000 Команда устанавливает расстояние между строками в пунктах. Стандартное значение равно одной строке (12 пунктам). Команда sl000 включает auto line mode.

intbl Абзац является частью некоторой таблицы.

keep При указании этой команды фиксируется принадлежность текста к текущему абзацу. Команда отключается указанием параметра 0.

kеерn При указании этой команды текст ставится в соответствие следующему (next) абзацу. Команда отключается указанием параметра 0.

Привет друзья! Сегодня мы поговорим о необычном формате файла, который называется rtf. Из статьи вы узнаете немного из истории создания этого расширения, чем открыть формат rtf, какие для этого используются программы. Так как этот файл достаточно распространенный, то существует множество приложений, которые способные его открыть и редактировать. В статье я приведу только несколько самых лучших утилит, которые способны открыть этот тип файла.

Формат Rtf - первое знакомство

В этом формате сохраняются текстовые файлы, которые поддерживают форматированные тексты. В далеком 1982 году программисты компании Microsoft предложили использовать расширение rtf, которое впоследствии, можно было бы форматировать. После этого этот формат файла стал поддерживаться практически всеми графическими процессорами. Самый известный из них это, конечно же, Microsoft Word.

Чем открыть rtf - подборка программ

Как вы уже поняли, для того, чтобы работать с этим файлом нам понадобится текстовый редактор. Так как формат является детищем компании Microsoft, то она позаботилась о своих пользователях и встроила прямо в Windows бесплатный текстовый редактор под названием WordPad, которые работает с этим типом расширений. Но существуют и альтернативные варианты программ. Среди самых продвинутых альтернатив можно отметить:

  • AbiWord
  • OpenOffice

Эти две бесплатные программы с легкостью откроют любой файл с расширение rtf. Все остальные приложения не имеет смысла перечислять, так как процесс открытия у всех них идентичен. Единственное отличие между ними в интерфейсе и настройка. Две вышеприведенные программы являются лидерами ниши бесплатных текстовых процессоров, поэтому рекомендую воспользоваться одной из них.

RTF (Rich Text Format) – текстовый формат, который является более продвинутым в сравнении с обычным TXT. Целью разработчиков было создать формат, удобный для чтения документов и электронных книг. Это удалось достичь благодаря внедрению поддержки мета-тегов. Выясним, какие программы умеют оперировать объектами с расширением RTF.

Работу с Rich Text Format поддерживают три группы приложений:

  • текстовые процессоры, включенные в состав ряда офисных пакетов;
  • софт для чтения электронных книг (так называемые «читалки»);
  • текстовые редакторы.

Кроме того, объекты с данным расширением умеют открывать некоторые универсальные просмотрщики.

Способ 1: Microsoft Word

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


В целом Word очень корректно работает с форматом RTF, правильно отображая все объекты, к которым применены мета-теги в документе. Но это и не удивительно, так как разработчик у программы и у данного формата один и тот же – компания Microsoft. Что же касается ограничения по редактированию документов RTF в Ворде, то это скорее проблема самого формата, а не программы, так как он просто не поддерживает некоторые продвинутые возможности, которые, например, используются в формате DOCX. Главный же недостаток Word в том, что указанный текстовый редактор является частью платного офисного пакета Microsoft Office.

Способ 2: LibreOffice Writer

Следующим текстовым процессором, умеющим работать с RTF, является Writer, который входит в свободный пакет офисных приложений LibreOffice.


Существует и альтернативный вариант запуска текстового документа в стартовом окне LibreOffice.


Для реализации ещё одного варианта открытия объекта достаточно переместиться в конечную директорию в Проводнике , выделить сам текстовый файл и перетащить его, зажимая левую кнопку мыши, в окно LibreOffice. Документ отобразится во Writer.

Есть также варианты открытия текста не через стартовое окошко LibreOffice, а уже через интерфейс самого приложения Writer.


Как видим, LibreOffice Writer предоставляет больше вариантов открытия текста, чем Ворд. Но, в то же время, нужно заметить, что при отображении текста данного формата в LibreOffice, некоторые пробелы помечаются серым цветом, что может мешать при чтении. Кроме того, книжный вид Libre уступает по удобству вордовскому режиму чтения. В частности, в режиме «Книжный вид» не убираются ненужные инструменты. Но безусловное преимущество приложения Writer – это то, что им можно пользоваться абсолютно бесплатно, в отличие от приложения Microsoft Office.

Способ 3: OpenOffice Writer

Ещё одной бесплатной альтернативой Ворду при открытии RTF является применение приложения OpenOffice Writer, которое входит в другой бесплатный пакет офисного софта – Apache OpenOffice.


Существует вариант запуска из стартового окошка пакета OpenOffice.


Есть также возможность запустить документ перетаскиванием из Проводника в стартовое окно OpenOffice тем же способом, что и для LibreOffice.

Процедура открытия также осуществляется через интерфейс Writer.


Собственно, все преимущества и недостатки у OpenOffice Writer при работе с RTF те же, что и у LibreOffice Writer: программа уступает в визуальном отображении содержимого Ворду, но в то же время является, в отличие от него, бесплатной. В целом же офисный пакет LibreOffice считается на данный момент более современным и продвинутым, чем его основной конкурент среди бесплатных аналогов — Apache OpenOffice.

Способ 4: WordPad

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

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


Дело в том, что в реестре Виндовс именно WordPad прописан, как софт по умолчанию для открытия данного формата. Поэтому, если корректировки в настройки системы не вносились, то указанным путем текст откроется именно в WordPad. Если же изменения производились, то документ запустится с помощью того софта, который назначен по умолчанию для его открытия.

Существует возможность запустить RTF также из интерфейса WordPad.


Конечно, по возможностям отображения содержимого WordPad значительно уступает всем текстовым процессорам, которые были перечислены выше:

  • Данная программа, в отличие от них, не поддерживает работу с изображениями, которые могут быть вмонтированы в документ;
  • Она не разбивает текст на страницы, а представляет его цельной лентой;
  • В приложении отсутствует отдельный режим чтения.

Но в то же время WordPad имеет одно важное преимущество перед указанными выше программами: его не нужно инсталлировать, так как он входит в базовый вариант Windows. Ещё одним преимуществом является то, что, в отличие от предыдущих программ, для того, чтобы запустить RTF в WordPad, по умолчанию достаточно просто кликнуть по объекту в проводнике.

Способ 5: CoolReader

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


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

Способ 6: AlReader

Ещё одна читалка, поддерживающая работу с RTF — AlReader.


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

Способ 7: ICE Book Reader

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

  1. Активируйте ICE Book Reader. Щелкните по значку «Библиотека» , который представлен иконкой в форме папки на верхней горизонтальной панели.
  2. После запуска окна библиотеки щелкните «Файл» . Выберите .

    Иной вариант: в окне библиотеки щелкните по иконке «Импортировать текст из файла» в форме значка «плюс».

  3. В запущенном окне перейдите в ту папку, где расположен текстовый документ, который требуется импортировать. Произведите его выделение и нажмите «OK» .
  4. Содержимое будет импортировано в библиотеку ICE Book Reader. Как видим, название целевого текстового объекта добавлено в список библиотеки. Чтобы начать читать данную книгу, кликните двойным щелчком левой кнопки мыши по наименованию данного объекта в окошке библиотеки либо нажмите Enter после его выделения.

    Также можно выделить этот объект, щелкнуть «Файл» и далее выбрать «Читать книгу» .

    Ещё один вариант: после выделения имени книги в окне библиотеки щелкните по значку «Читать книгу» в форме стрелки на панели инструментов.

  5. При любом из перечисленных действий текст отобразится в ICE Book Reader.

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

Способ 8: Universal Viewer

Также с файлами RTF умеют работать многие универсальные просмотрщики. Это такие программы, которые поддерживают просмотр абсолютно разных групп объектов: видео, аудио, текст, таблицы, изображения и т.д. Одним из таких приложений является Universal Viewer.


Существует также другой вариант.


Universal Viewer отображает содержимое объектов RTF в стиле похожем на стиль отображения в текстовых процессорах. Как и большинство других универсальных программ, данное приложение поддерживает не все стандарты отдельных форматов, что может приводить к ошибкам отображения некоторых символов. Поэтому Universal Viewer рекомендуется использовать для общего ознакомления с содержимым файла, а не для чтения книги.

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

Так, если объект требуется отредактировать, то лучше всего использовать текстовые процессоры: Microsoft Word, LibreOffice Writer или OpenOffice Writer. Причем первый вариант предпочтительней. Для чтения книг лучше использовать программы-читалки: CoolReader, AlReader и др. Если кроме этого вы ведете свою библиотеку, то тут подойдет ICE Book Reader. Если вам нужно прочитать или отредактировать RTF, но при этом вы не желаете устанавливать дополнительное ПО, то воспользуйтесь встроенным текстовым редактором Windows WordPad. Наконец, если вы не знаете, с помощью какого приложения запустить файл данного формата, то можете воспользоваться одним из универсальных просмотрщиков (например, Universal Viewer). Хотя, ознакомившись с данной статьей, вы уже в курсе, чем именно открывать RTF.

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

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

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

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

Что мы видим? Я вижу наше любимое стихотворение «Парус». Мы видим изначально текстовый 8-битный формат данных. Это уже радует - когда в исходных данных текст, понимать, что происходит, гораздо проще. Теперь давайте разберёмся, как эти самые данные прочитать. Для этого я расскажу немного теории по теме.

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

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

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

Ещё стоит отметить, что некоторые управляющие слова могут быть закрыты с помощью добавления параметра ноль, а не создания новой подгруппы. Например, следующие варианты эквивалентны: This is {\b bold} 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. function rtf2text($filename ) {
  7. $text = file_get_contents ($filename ) ;
  8. if (! strlen ($text ) )
  9. return "" ;
  10. $document = "" ;
  11. $stack = array () ;
  12. $j = - 1 ;
  13. for ($i = 0 ; $i < strlen ($text ) ; $i ++ ) {
  14. $c = $text [ $i ] ;
  15. switch ($c ) {
  16. case "\\ " :
  17. $nc = $text [ $i + 1 ] ;
  18. if ($nc == "\\" && rtf_isPlainText($stack [ $j ] ) ) $document .= "\\" ;
  19. elseif ($nc == "~" && rtf_isPlainText($stack [ $j ] ) ) $document .= " " ;
  20. elseif ($nc == "_" && rtf_isPlainText($stack [ $j ] ) ) $document .= "-" ;
  21. elseif ($nc == "*" ) $stack [ $j ] [ "*" ] = true ;
  22. elseif ($nc == """ ) {
  23. $hex = substr ($text , $i + 2 , 2 ) ;
  24. $document .= html_entity_decode ("" . hexdec ($hex ) . ";" ) ;
  25. $i += 2 ;
  26. } elseif ($nc >= "a" && $nc <= "z" || $nc >= "A" && $nc <= "Z" ) {
  27. $word = "" ;
  28. $param = null ;
  29. for ($k = $i + 1 , $m = 0 ; $k < strlen ($text ) ; $k ++, $m ++ ) {
  30. $nc = $text [ $k ] ;
  31. if ($nc >= "a" && $nc <= "z" || $nc >= "A" && $nc <= "Z" ) {
  32. if (empty ($param ) )
  33. $word .= $nc ;
  34. else
  35. break ;
  36. } elseif ($nc >= "0" && $nc <= "9" )
  37. $param .= $nc ;
  38. elseif ($nc == "-" ) {
  39. if (empty ($param ) )
  40. $param .= $nc ;
  41. else
  42. break ;
  43. } else
  44. break ;
  45. $i += $m - 1 ;
  46. $toText = "" ;
  47. switch (strtolower ($word ) ) {
  48. case "u" :
  49. $toText .= html_entity_decode ("" . dechex ($param ) . ";" ) ;
  50. $ucDelta = @ $stack [ $j ] [ "uc" ] ;
  51. if ($ucDelta > 0 )
  52. $i += $ucDelta ;
  53. break ;
  54. case "par" : case "page" : case "column" : case "line" : case "lbr" :
  55. $toText .= "\n " ;
  56. break ;
  57. case "emspace" : case "enspace" : case "qmspace" :
  58. $toText .= " " ;
  59. break ;
  60. case "tab" : $toText .= "\t " ; break ;
  61. case "chdate" : $toText .= date ("m.d.Y" ) ; break ;
  62. case "chdpl" : $toText .= date ("l, j F Y" ) ; break ;
  63. case "chdpa" : $toText .= date ("D, j M Y" ) ; break ;
  64. case "chtime" : $toText .= date ("H:i:s" ) ; break ;
  65. case "emdash" : $toText .= html_entity_decode ("—" ) ; break ;
  66. case "endash" : $toText .= html_entity_decode ("-" ) ; break ;
  67. case "bullet" : $toText .= html_entity_decode ("•" ) ; break ;
  68. case "lquote" : $toText .= html_entity_decode ("‘" ) ; break ;
  69. case "rquote" : $toText .= html_entity_decode ("’" ) ; break ;
  70. case "ldblquote" : $toText .= html_entity_decode ("«" ) ; break ;
  71. case "rdblquote" : $toText .= html_entity_decode ("»" ) ; break ;
  72. default :
  73. $stack [ $j ] [ strtolower ($word ) ] = empty ($param ) ? true : $param ;
  74. break ;
  75. if (rtf_isPlainText($stack [ $j ] ) )
  76. $document .= $toText ;
  77. $i ++;
  78. break ;
  79. case "{" :
  80. array_push ($stack , $stack [ $j ++ ] ) ;
  81. break ;
  82. case "}" :
  83. array_pop ($stack ) ;
  84. $j --;
  85. break ;
  86. case "\0" : case "\r" : case "\f" : case "\n" : break ;
  87. default :
  88. if (rtf_isPlainText($stack [ $j ] ) )
  89. $document .= $c ;
  90. break ;
  91. return $document ;
Код с комментариями вы можете получить на