Пишем программу для создания книг FB2

на главную

Жанры

Поделиться:

Пишем программу для создания книг FB2

Шрифт:

Annotation

Подробный комментарий к исходному коду программы создающей книжку в формате FB2.

Пишем программу (в Delphi) для создания книг FB2

Введение

Начинаем

Читаем текстовый файл

Устанавливаем стиль заголовка

Редактирование строки

Создание FB2

Структура

Приложение

Unit1.dfm

Код файла Unit1.pas соответствующего Form1

genres.dfm

genres.pas

EditStr.dfm

EditStr.pas

authors.dfm

authors.pas

dm.pas

my_FB2.dpr

UmFB2.pas

notes

1

Пишем программу (в Delphi) для создания книг FB2

Введение

В начале было слово, и слово было 2 байта… Автор мне неизвестен.

Все началось с покупки электронной книжки LBook eReader V3.

Затем я убедился, что книги, лучше всего читаются в формате FB2.

Потом мне захотелось оцифровать книги моего любимого писателя Кальмана Миксата, и тут я увидел, что все не так просто…

Да я в этой «тусовке» недавно и возможно чёто не понимаю, но все свои проблемы я привык решать программным путем.

Состряпал программку, конечно еще сырую, а потом вспомнил опыт Линуса Торвальдса и подумал:

–  А, кину я исходник в рунет, и может добрые люди выкормят, вырастят моего ребенка и выведут в люди.

Вы можете спросить, а чего же ты сам это не сделаешь? Во-первых, меня ждут другие "великие дела", во-вторых, я уверен, что коллективным разумом, можно сделать больше и быстрее…

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

Это не учебник Delphi и основы, я рассказывать не собираюсь, но постараюсь расписать как можно подробней.

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

Начинаем

План работы:

* Берем текстовый файл

* Присваиваем строчкам стили

* Делаем файл FB2.

Общие принципы программы.

Содержание книги будет хранится в ListBox1.

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

// начало примера.

H1 | Кальман Миксат. ЧЕРНЫЙ ГОРОД

H2 | ЧАСТЬ ПЕРВАЯ

H3 | ГЛАВА ПЕРВАЯ.

S| В которой содержатся сведения и подробности, весьма важные для читателя

N| Пал Гёргей был самым примечательным вице-губернатором Спеша во времена Тёкёли

// конец примера.

Символ | отделяет информацию о стиле от строки текста. Теперь надо объяснить, что означают эти буковки.

С H1 по H5: заголовки разных уровней структуры книги (части, главы, разделы и т. п.), я посчитал, что 5 уровней более чем достаточно, мне пока требовалось только три.

S: Subtitle - подзаголовок.

N: Normal - обычный абзац.

Еще могут использоваться стили:

E: Epigraph - эпиграф

T: Text-author - автор цитаты / эпиграфа

P: Poem - стихи

– : None строка будет игнорироваться при записи FB2 файла.

Если потребуется Вы добавите еще…

Читаем текстовый файл

При чтении текстового файла, к каждой строчке прибавляется начало ' N| ' т. к. форматирование еще не сделано и все строки одинаково обычны.

// начало кода

procedure LoadTXT(FName: string);

var

L: TStringList;

i, j: integer;

s, ss: string;

begin

L:= TStringList.Create; // создаем временный список

L.LoadFromFile(fname); // читаем из файла // можно сделать грамотнее с помощью try

for i:= 0 to L.Count - 1 do// просматриваем текст

begin

s:= ''; ss:= L[i];

for j:= 1 to length(Ss) do

begin // просматриваем строку

case ss[j] of

'<': S:= S + '<'; // знак < вызывает сбой в читалке. т. к. она думает что дальше следует тэг

'>': S:= S + '>'; // заменяем, на всякий случай

'^': S:= S + '^'; // этот символ будет использован в служебных целях

'~': S:= S + '~'; // - // -

'&': S:= S + '&';

else S:= S + ss[j]; // иначе, претензий нет, символ добавляем к строке

end; // case

end; // обработка строки завершена

L[i]:= ' N| ' + S; // в начало каждой строки вводим указатель стиля Normal

end; // обработка текста завершена

Form1.ListBox1.Items.Assign(L); // сбрасываем список в ListBox

L.Free; // удаляем временный список

end;

// конец кода

Если файл считан, теперь мы можем его форматировать.

Просматриваем текст книги, выделяем нужную строку, выбираем необходимый стиль и нажимаем кнопку

[>]

При этом вызывается процедура ChangeStyle(TmyStyle(RG.itemindex));

Как параметр она получает стиль из радио - списка RG.

К сожалению это все делать надо ручками. Конечно, возможна некая автоматизация, но пока идет речь об упрощенной программе…

Книги из серии:

Без серии

Комментарии:
Популярные книги

Приручитель женщин-монстров. Том 3

Дорничев Дмитрий
3. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 3

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2

Заплатить за все

Зайцева Мария
Не смей меня хотеть
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Заплатить за все

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор

Кодекс Охотника. Книга XVI

Винокуров Юрий
16. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVI

Гром над Империей. Часть 1

Машуков Тимур
5. Гром над миром
Фантастика:
фэнтези
5.20
рейтинг книги
Гром над Империей. Часть 1

Идеальный мир для Социопата 7

Сапфир Олег
7. Социопат
Фантастика:
боевая фантастика
6.22
рейтинг книги
Идеальный мир для Социопата 7

Газлайтер. Том 3

Володин Григорий
3. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 3

Защитник

Астахов Евгений Евгеньевич
7. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Защитник

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Приручитель женщин-монстров. Том 4

Дорничев Дмитрий
4. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 4

Попаданка в деле, или Ваш любимый доктор - 2

Марей Соня
2. Попаданка в деле, или Ваш любимый доктор
Любовные романы:
любовно-фантастические романы
7.43
рейтинг книги
Попаданка в деле, или Ваш любимый доктор - 2

Генерал Империи

Ланцов Михаил Алексеевич
4. Безумный Макс
Фантастика:
альтернативная история
5.62
рейтинг книги
Генерал Империи

Машенька и опер Медведев

Рам Янка
1. Накосячившие опера
Любовные романы:
современные любовные романы
6.40
рейтинг книги
Машенька и опер Медведев