Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 12747
Последний выпуск: 9.07.2014

RTF - Описание формата файла

[Часть 1] [Часть 2] [Часть 3]

Формат 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 <delimiter>

Перед управляющим словом вводится обратная косая черта "\" (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 \red128\green64\blue128\;;\red0\green64\blue128; }

Определение цвета завершается точкой с запятой. Поскольку 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: определяет длину битовой карты в байтах

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
15K
25 сентября 2006 года
o2_
11 / / 25.09.2006
+1 / -1
Мне нравитсяМне не нравится
28 мая 2007, 07:09:49
Примера не хватает =(
2.
не зарегистрирован
Borman
+1 / -2
Мне нравитсяМне не нравится
9 августа 2005, 10:35:13
MS вам в помощь. 211 страниц текста-спецификации формата RTF. Немного неудобно, что на онгельском, но кому надо - прочитает.
3.
не зарегистрирован
Kosten
+2 / -0
Мне нравитсяМне не нравится
12 июня 2005, 01:09:28
Имею более-менее полную спецификацию. На английском. Кто хочет - пишите presentatio@mail.ru
4.
не зарегистрирован
mike
+1 / -1
Мне нравитсяМне не нравится
20 апреля 2005, 09:39:31
5.
не зарегистрирован
Dragon
+1 / -1
Мне нравитсяМне не нравится
19 апреля 2005, 23:36:40
..Ну и зачем спросили мой E-Mail, если на него нельзя перейти?
Мой E-Mail info@dragonsoft.ru, если кто-то знает, как в RTF добавить рисунок, просьба написать.
6.
не зарегистрирован
Dragon
+2 / -2
Мне нравитсяМне не нравится
19 апреля 2005, 23:33:34
Это - для программиста? Не смешите.
Как мне добавить в файл RTF рисунок?
(Ручками, например на DELPHI)?
(Просьба, если кто-то знает, написать на e-mail)
7.
не зарегистрирован
Sasha
+2 / -2
Мне нравитсяМне не нравится
9 сентября 2004, 17:08:53
Это далеко не полная спецификация. Вот, например, как создать содержание, а закладки, а ...? Вообще, много чего не хватает.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог