Преобразование электронной книги в формате html в формат djvu.


ДАНО: электронная книга в формате html. Каждый htm-Файл ( копия страницы книги) связан ссылками с соседними файлами ( previous page, next page ). Нtm-оглавления нет, поэтому навигация по книге ограничена последовательным доступом. В в книге имеются в текстовом виде оглавление книги и предметный указатель. Здесь можно посмотреть фрагмент такой книги.
Задача: преобразовать эту книги в другой формат с электронной навигацией по оглавлению и предметному указателю.
Замечание. Так как у нас нет средств для создания bookmarks c предметным указателем для формата PDF, то преобразовывать книгу будем в формат DJVU.
Программные средства: Adobe Acrobat, UltraEdit, Text Duplicate Killer 1.1, Search and Replace, BookmarkTool-2.0,convert_bookmark_to_text,pdftodjvu,DJVUmark.

I.  C помощью функции Adobe Acrobat 'преобразовать все файлы в формат pdf объединить их в один файл' получаем книгу в pdf формате.
Если имена файлов не позволяют их ранжировать согласно номерам страниц книги, то эту операцию выполняем по частям.
В нашем примере имена файлов составляют несколько групп:
1) обложка-фронт
2) вводная часть ( i,iii,iv,v,vi...)
3) основная часть - номера (#9)
4) основная часть - номера (10-99)
5) основная часть - номера (100-999).
В данном случае сначала преобразуем в pdf 5 групп файлов а затем объединяем эти 5 файлов в книгу pdf.
 

II.  Преобразуем pdf  в Djvu одной из программ pdftodjvu.
 

III. Получаем файл bookmarks.html c помощью BookmarkTool-2.0
 

IV. Преобразуем bookmarks.html в bookmarks.txt программой convert_bookmark_to_text
 

Фрагмент файла bookmarks.txt:


1Binder01 #1
cover #1
Локальный диск
cover #1
cover-0 #2
Локальный диск
cover-0 #2
frontmatter #3
Локальный диск
frontmatter #3
frontmatter-0 #4
Локальный диск
frontmatter-0 #4
frontmatter-1 #6
Локальный диск
frontmatter-1 #6
1Binder02 #7
page_i #7
Локальный диск
page_i #7
page_ii #8
Локальный диск
page_ii #8
page_iii #9
Локальный диск
page_iii #9
page_iv #10
Локальный диск
page_iv #10
page_ix #11
Локальный диск
page_ix #11
page_v #12
Локальный диск
page_v #12
page_vi #13
Локальный диск
page_vi #13
page_vii #14
Локальный диск
page_vii #14
page_x #15
Локальный диск
page_x #15
page_xi #17
Локальный диск
page_xi #17
page_xii #18
Локальный диск
page_xii #18
1Binder03 #19
page_1 #19
Локальный диск
page_1 #19
page_2 #20

 

Замечание: Числа , которые расположены после текста page_, это номера страниц, которые напечатаны на страницах книги и, на которые есть ссылки в текстах оглавления и предметного указателя. Числа, стоящие после символа #, это номера этих страниц в файлах  форматов pdf  и djvu.

Это означает, что при внедрении закладок с оглавлением и предметным указателем должны книжные номера заменить на соответствующие номера страниц формата DJVU. Поэтому следующим шагом будет формирование таблицы замен адресов.
..........
V. 1) Редактируем в UltraEdit файл bookmarks.txt, удаляя строки "Локальный диск" и "Binder" , UltraEdit'том при помощи замены регульными выражением %*Локальный диск*^P и %*Binder*^P
2) удаляем строки-дубли программой Text Duplicate Killer 1.1
3) удаляем текст "page_"
 

VI. Далее будем рассматривать только строки, содержащих контекст "page_" .
1) удаляем текст "page_"
2) Заменяем " #" на &
3) вставляем # вначале каждой строки и в итоге получаем :
#i&7
#ii&8
#iii&9
#iv&10
#ix&11
#v&12
#vi&13
#vii&14
#x&15
#xi&17
#xii&18
#1&19
#2&20

Таким образом,  мы получили таблицу замен, которой мы воспользуемся в дальнейшем при использовании функции замен адресации программы DJVUmark. Это означает, в текстах оглавления и предметного указателя числа,  стоящие после символа #,  должны быть заменены на соответствующие числа из таблицы, которые расположены после знака &
 

VII. Формируем тексты оглавления и предметного указателя для программы DJVUmark Сначала запускаем DJVUmark  с функцией "Подготовка данных" .Копируем тексты оглавления и предметного указателя с файлов. Это можно сделать из одного из 3х источников: из исходного html, так текст книги   на данный момент имеется в форматах (html,pdf.,djvu) . Далее заполняем файлы-заготовки полученными  только что скопированными текстами.  Ниже приведен фрагмент текста оглавления.


Фрагмент текста оглавления:

<h4>ITERATIVE METHODS FOR DIFFRACTIVE OPTICAL ELEMENTS COMPUTATION </h4>
<h5>Soifer V.A., Kotlyar Victor., Doskolovich Leonid</h5>
<h6>Taylor & Francis Routledge </h6>
<h4>TABLE OF CONTENTS</h4>
Preface vii
Introduction: Generation of Wavefields using Diffractive Optical Elements (DOEs) 1
1. Parametric Methods of Computing DOEs 11
1.1 Error reduction algorithm 11
1.2 Adaptive-additive algorithm 15
1.3 Adaptive-multiplicative algorithm 26
1.4 An algorithm for extrapolating and interpolating the DOE phase 32
2. Iterative Algorithms for Calculating DOEs Forming Radially Symmetrical Images 41
2.1 Calculation of DOEs forming radially symmetric diffraction patterns 42


VIII. Подготавливаем тексты  оглавления и предметного указателя для проведения операции замены номеров согласно полученной в пункте VII таблицы замен. Для этого перед номерами страниц ставим знак "#". Это можно сделать программой Search and Replace. Замена регульными выражениями: выражение " [0-9]" заменить на выражение " #%1". Предварительно перед структурными номерами поставим символ *., чтобы избежать их замены.

<h4>ITERATIVE METHODS FOR DIFFRACTIVE OPTICAL ELEMENTS COMPUTATION </h4>
<h5>Soifer V.A., Kotlyar Victor., Doskolovich Leonid</h5>
<h6>Taylor & Francis Routledge </h6>
<h4>TABLE OF CONTENTS</h4>
Preface vii
Introduction: Generation of Wavefields using Diffractive Optical Elements (DOEs) #1
*1. Parametric Methods of Computing DOEs #11
*1.1 Error reduction algorithm #11
*1.2 Adaptive-additive algorithm #15
*1.3 Adaptive-multiplicative algorithm #26
*1.4 An algorithm for extrapolating and interpolating the DOE phase #32
*2. Iterative Algorithms for Calculating DOEs Forming Radially Symmetrical Images #41
*2.1 Calculation of DOEs forming radially symmetric diffraction patterns #42


IX. Совершаем замену замену номеров страниц в текстовых файлах тексты оглавления и предметного указателя согласно таблице замен.
1. Запускаем DJVUmark и выбираем функцию "Замена систем адресации"
2. Замена производится "в группе файлов", если одновременно обрабатываем два файла
3. "Выбор контекста "в словах"
4. "Выполнить"

Результат замены:

<h4>ITERATIVE METHODS FOR DIFFRACTIVE OPTICAL ELEMENTS COMPUTATION </h4>
<h5>Soifer V.A., Kotlyar Victor., Doskolovich Leonid</h5>
<h6>Taylor & Francis Routledge </h6>
<h4>TABLE OF CONTENTS</h4>
Preface vii
Introduction: Generation of Wavefields using Diffractive Optical Elements (DOEs) 12 (#1)
1. Parametric Methods of Computing DOEs 22 (#11)
1.1 Error reduction algorithm 22 (#11)
1.2 Adaptive-additive algorithm 26 (#15)
1.3 Adaptive-multiplicative algorithm 38 (#26)
1.4 An algorithm for extrapolating and interpolating the DOE phase 44 (#32)
2. Iterative Algorithms for Calculating DOEs Forming Radially Symmetrical Images 53 (#41)
2.1 Calculation of DOEs forming radially symmetric diffraction patterns 54 (#42)

Здесь в круглых скобках приведены  замененные номера страниц. Программа DJVUmark эти тексты игнорирует, а для контроля правильности они плезны.

Теперь запускаем DJVUmark с функцией "Создание Interface из текущих данных", используя  тексты оглавления и предметного указателя с замененными номерами страниц.

Полученную таким образом книгу ITERATIVE METHODS FOR DIFFRACTIVE OPTICAL ELEMENTS COMPUTATION, Soifer V.A., Kotlyar Victor., Doskolovich Leonid  мжно посмотреть на нашей странице.