Программа преобразования исходного текста на С++ в RTF-файл
Курсовая работа, 04 Июня 2012, автор: пользователь скрыл имя
Краткое описание
Целью курсовой работы является разработка программного продукта, реализующего преобразование Си текста в RTF-файл. Для реализации поставленной цели были определены следующие задачи:
1. Разобрать структуру RTF-файла.
2. Реализовать алгоритм чтения файла.
3. Реализовать алгоритм преобразования Си в RTF.
4. Реализовать запись полученных данных в файл.
Содержание
Введение 3
I.Теоретический раздел 4
1.1 RTF- Rich Text Format 4
II. Технологический раздел 11
2.1. Стандартные заголовочные файлы. 11
2.2.Стандартные типы данных. 13
2.3. Описание собственных функций 14
Заключение 16
Литература 17
Приложение 18
Вложенные файлы: 1 файл
Документ Microsoft Word.doc
— 235.00 Кб (Скачать файл)Приднестровский государственный университет им. Т.Г.Шевченко
Рыбницкий филиал
Кафедра физики, математики и информатики
Курсовая работа
по дисциплине «Программирование на языке высокого уровня C++»
на тему «Программа преобразования исходного текста на С++ в RTF-файл»
Выполнил:
студент I курса
специальности: «ПОВТ и АС»
Лазарь Алексей
Проверил:
ст. преп. Сташкова О.В.
Рыбница
17
Содержание
Введение
I.Теоретический раздел
1.1 RTF- Rich Text Format
II. Технологический раздел
2.1. Стандартные заголовочные файлы.
2.2.Стандартные типы данных.
2.3. Описание собственных функций
Заключение
Литература
Приложение
Введение
В данной курсовой рассматривается алгоритм преобразования исходного текста на Си в RTF –файл.
В настроящее время существует много языков программирования и создаются новые. Поэтому программистам очень важна подсветка синтаксиса, чтобы отлично разбираться в исходных кодах программ. Это можно реализовать несколькими способами:
с помощью HTML
с помощью RTF
Я буду использовать второй вариант. Поэтому я буду преобразовывать Си в RTF-файлы. В настоящее время существует множество IDE средств разработки Си, и в каждом из них практически своя подсветка синтаксиса. Я за основу своей подсветки взял подсветку Си кода в программе Notepad++, так как эта программа наиболее распространенная и удобная.
Целью курсовой работы является разработка программного продукта, реализующего преобразование Си текста в RTF-файл. Для реализации поставленной цели были определены следующие задачи:
1. Разобрать структуру RTF-файла.
2. Реализовать алгоритм чтения файла.
3. Реализовать алгоритм преобразования Си в RTF.
4. Реализовать запись полученных данных в файл.
I.Теоретический раздел
1.1 RTF- Rich Text Format
Rich Text Format -(RTF, «формат обогащённого текста» (rich с английского — богатый)) — проприетарный межплатформенный формат хранения размеченных текстовых документов, предложенный группами программистов, основавшими компании Microsoft и Adobe, как метатэговский формат для редактора Word в 1982 году. С тех пор спецификация формата несколько раз изменялась. RTF-документы поддерживаются всеми современными текстовыми процессорами. После разрыва отношений с Microsoft компания Adobe продолжила развитие метатэговского языка, заложенного в основу RTF, создав в 1985 году язык PostScript.
Данный формат был определен фирмой 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-последовательность, распознать, что символ не следует интерпретировать как управляющий.
Специальные управляющие слова (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\;;\red
Определение цвета завершается точкой с запятой. Поскольку 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).
Это не все спецификаторы RTF, их там очень много. Это стандартный набор использования. Последующие версии RT-формата могут быть дополнены новыми командами. Если программа не распознает команду, то она может быть пропущена. Конец каждой команды отмечается одним из описанных выше разделяющих символов (чаще всего -точкой с запятой).
II. Технологический раздел
2.1. Стандартные заголовочные файлы.
В курсовой работе использовались следующие стандартные заголовочные файлы: