Pull to refresh

Создание CHM с поиском и индексом

Reading time4 min
Views42K
Думаю многие из вас сталкивались с такой проблемой. Заходишь на сайт — видишь кучу полезной информацию, но при этом на сайте не организован полноценной поиск, нет указателя, а пользоваться каждый раз гуглом, мягко говоря, напрягает.
Да и плюс ко всему хотелось бы иметь возможность иметь информацию под другой даже когда нет интернета.

Формат CHM известен практически всем. Легкий, удобный и функциональный. Работает, правда, официально он только в Windows. У этого формата есть очень большой плюс — после создания такого файла в будущем будет возможность его отредактировать.

Что нам нужно для создания полноценного (с поиском, указателем, содержанием) файла chm?
0. скачанная копия сайта (здесь рассматривать не будем — получить копию сайта можно множеством способов, например, воспользовавшись программами типа Teleport Pro, WebCopier).
1. htm2chm — позволяет удобно создавать файлы содержания и указателя (там есть компилятор, но без поиска)
2. Microsoft HTML Help WorkShop — сам компилятор, которым будем создавать chm-ки.

После установки htm2chm делаем интеграцию с оболочкой.



Далее пользуясь контекстным меня создаем файлы указателя (TOC.hhc) и содержание (Index.hhk).



С помощью редактора содержания htm2chm мы можем создать удобную древовидную структуру представления информацию.



Теперь нам осталось только создать файл проекта и откомпилировать проект в HTML Help WorkShop.

Опытным путем я создал несколько шаблонов для проектов.
1. Шаблон с содержанием и избранным, без указателя (кодировка — Win1251):

[OPTIONS]
Compatibility=1.1 or later
Compiled file=Project.chm
Contents file=TOC.hhc
Default Window=ProjectType
Default topic=Index.htm
Display compile progress=No
Full-text search=Yes
Language=0x419 Русский

[WINDOWS]
ProjectType="???",«TOC.hhc»,,«Index.htm»,«Index.htm»,,,,,0x63520,,0x184e,,,,,,,,0

[FILES]
Sample.hhp

[INFOTYPES]

здесь:
Project.chm — имя файла на выходе.
Index.htm — начальная/домашняя страница для файла помощи

Все необходимые файлы для компиляции подхватятся из файла содержания (TOC.hhc).

2. Шаблон с содержанием и указателем, а также кнопкой изменения шрифта:
[OPTIONS]
Compatibility=1.1 or later
Compiled file=Project.chm
Default Window=WindowType
Default topic=Index.htm
Display compile progress=No
Full-text search=Yes
Language=0x419 Русский

[WINDOWS]
WindowType="???",«TOC.hhc»,«Index.hhk»,«Index.htm»,«Index.htm»,,,,,0x60520,250,0x10184e,[10,10,700,500],,0x200,1,,,,0

[FILES]
Sample_FIT.hhp

[INFOTYPES]

3. Шаблон с содержанием и указателем, а также кнопкой изменения шрифта и доп. кнопкой («About»):
[OPTIONS]
Compatibility=1.1 or later
Compiled file=Project.chm
Default Window=WindowType
Default topic=Index.htm
Display compile progress=No
Full-text search=Yes
Language=0x419 Русский

[WINDOWS]
WindowType="???",«TOC.hhc»,«Index.hhk»,«Index.htm»,«Index.htm»,,,«About.htm»,«About»,0x60520,250,0x18184e,[10,10,700,500],,0x200,1,,,,0

[FILES]
Sample_FITJ2.hhp

[INFOTYPES]

здесь:
About — название кнопки
About.htm — файл, на который ссылается кнопка

Если внимательно посмотреть файл TOC.hhc, то можно заметить, что это обычный xml-файл, в котором идет перечисление параметров, а также настройки отображения файла помощи.
Вот про эти настройки и поговорим.
Можно увидеть примерно вот такие строки:
PARAM name=«Window Styles» value=«0x800627»
PARAM name=«ImageType» value=«Folder»
PARAM name=«ExWindow Styles» value=«0x2200»

Значение для Window Styles имеет 16-ричный формат. Вот расшифровка:
PARAM name=«Window Styles» value=«0xb0daec»
где:
c:
бит 1 — Plus/Minus squares | Квадраты плюса/минуса
бит 2 — Draw lines between items | Рисовать линии между элементами
бит 4 — Start line from the root | Начинать линию из корневого элемента
e:
бит 2 — Show selection when focus lost | Показывать выбор при потере фокуса
Лучше ставить — иначе при комбинации Скрыть/Показать текущий топик показываться не будет.
a:
бит 4 — Only expand a single heading | Разворачивать только одиночный заголовок
Т.е. автоматическое разворачивание заголовков, имеющих разделы, при выборе.
бит 2 — Automatically track selection | Автоматически подчеркивать элемент
бит 1 — Ставит чекбоксы (но зачем?)…
d:
бит 1 — Select entire row | Выделение полной строки (полезная штука)
только если не выбран стиль Draw lines between items
b:
бит 8 — Border | Рамка (имеет смысл только для Dialog Frame)
бит 4 — Dialog Frame | Диалоговая рамка

Итого для 0x800627 имеем:
8 — (Border)
6 — 4+2 (Only expand a single heading, Automatically track selection)
2 — (Show selection when focus lost )
7 — 4+2+1 (Plus/Minus squares, Draw lines between items, Start line from the root)

Дополнительно:
Right-to-left reading order | Порядок чтения справа налево
(чистый бит)
param name=«ExWindow Styles» value=«0x2200»
Raised edge | Рельефный край (разницы вместе с ним не видно)
(чистый бит)
param name=«ExWindow Styles» value=«0x100»
Scroll bar on left side | Полоса прокрутки на левой стороне
(чистый бит)
param name=«ExWindow Styles» value=«0x4200»

PARAM name=«ImageType» value=«Folder»
Если этот параметр указан, то значки представляются в виде файлов.

На этом описание окончано. Для компиляции используем:
"%PROGRAMFILES%\HTML Help Workshop\hhc.exe" <ИМЯ ПРОЕКТА.HHP>

В конце увидим примерно такой отчет:
Compiling ..\bacula_24\Bacula_24.chm

Compile time: 0 minutes, 3 seconds
70 Topics
5,168 Local links
74 Internet links
34 Graphics

PS. Для декомпиляции можно использоваться множество средств, лично я использую примочку для FAR manager — CHMView.
Tags:
Hubs:
Total votes 14: ↑5 and ↓9-4
Comments8

Articles