VDS Хостинг для Ваших проектов

Создание chm с помощью компилятора hhc.exe

Июнь 26th, 2011 Рубрики: Прикладные и прочие

Как создать файл формата chm с помощью hhc.exe?

В предыдущей статье, где я знакомил читателей с мини-программой для быстрой сборки файлов формата chm – Chm4You!, как вы наверно помните, я указывал, что опции этого приложения не обширные, а нечто совсем не работает надлежащим образом. Кроме того я подметил, что сама программа является только интерфейсом для компилятора hhc.exe, работающего в режиме командной строки. Но, несмотря на этот недостаток, он позволяет создать справку формата chm, более продвинутую и гибкую, чем пользуясь Chm4You! В основном, это относится к тому, что можно создать панель навигации с содержанием и индексом. Сам компилятор входит в поставку с Chm4You! и его мы будем использовать.

На самом компиляторе hhc.exe подробно останавливаться не буду, как ни странно, потому что интересного в нём ничего нет. Отмечу только некоторые важные нюансы, которые необходимо иметь во внимании:

  • hhc.exe работает с файлом проекта, имеющим расширение .hhp;
  • hhc.exe не обрабатывает рисунки, имеющие в названии или пути кириллические символы; это существенный его недостаток;
  • веб-страницы созданные в «продвинутом HTML-редакторе» MS Word не обрабатываются, точнее некорректно и со глюками;
  • если сборке в chm подлежат страницы сохранённые из сети, то имеющиеся скрипты счётчиков будут вызывать ошибки, так что их придётся «очистить»;
  • в процессе компиляции постоянно (по крайней мере у меня) выдаётся предупреждение, что itircl.dll некорректно зарегистрирована; но на результат это не влияет: файлы chm создаются.

Итак, для компиляции нашей chm-справки используя hhc.exe, нам понадобятся как минимум 2 файла, которые можно создать в обыкновенном «Блокноте», но не примудритесь опять же использовать Word или ему подобных монстров:

  • файл проекта с расширением .hhp (HTML Help Project)
  • файл содержания с расширением .hhc (HTML Help Content)
  • по требованию файл индекса имеющий расширение .hhk (HTML Help Keys)
Поэтому при создании chm файла, всё сводится к правильной подготовке соответствующих файлов для сборки справки. Для их разработки существуют специальные немалого размера и не всегда бесплатные программы (например HTML Help Workshop, FAR HTML). О последней может напишу, но гораздо позже. Но их можно без большого труда создать и своими руками. Поэтому приступим!

Файл проекта .hhp

Создаём в Блокноте текстовый документ примерно следующего содержания:

[OPTIONS]
Binary Index=No
Compatibility=1.1 or later
Compiled File=Имя_файла_справки.chm
Contents File=Content.hhc
Default Window=main
Default Topic=1_Глава-1.htm
Display compile progress=No
Index File=Index.hhk
Language=0x419 Русский
Title=Заголовок нашей справки
Binary TOC=No
Default Font=
Full-text search=Yes
Auto Index=Yes
Create CHI file=No
Full text search stop list file=
Display compile notes=No

[WINDOWS]
main="Заголовок нашей справки","Content.hhc","Index.hhk","1_Глава-1.htm","Домашняя_страница.htm",,,,,0x72120,0,0x60305E,[0,0,800,580],0x100B0000,,,,,,0

[FILES]

Немножко объяснений:

  • Compiled File – указываете имя выходного файла в формате chm, который создаётся
  • Contents File – указываете имя файла с содержанием справки, его создадим позже
  • Default Topic – страница, которая будет загружаться по-умолчанию, когда открывается собранный chm-документ
  • Language – задаёт язык, используется для правильной подборки кодировки, поскольку в версиях поколения 1 используется ANSI а не UTF-8
  • Title – думаю понятно чем заменить – ставите заголовок справки, отображаемый в самом верху окна
  • Full-text search – для генерации данных для поиска
  • Create CHI file – обычно не надо создавать CHI с кэшем индексной информации, это может пригодится для больших файлов
[0,0,800,580] – размеры окна справки, "Домашняя_страница.htm" – это имя страницы, куда направится пользователь по нажатию кнопки «Домой», обычно совпадает со страницей по-умолчанию. Ну, проектный файл hhp у нас есть, – осталось создать содержание справки. Переходим!

Файл содержания .hhc (Table Of Contents file)

А вот этот файл и содержит структуру навигационной панели, что не работало в Chm4You! Используя его можно указать всё содержание справки, которое будет отображаться слева и пользователь в любой момент легко переходит на нужный ему раздел имея всю структуру перед глазами.

Создать этот файл не значительно сложнее, чем предыдущий. Файл .hhc фактически является html-документом, определённого содержания. Вот, как примерно должен будет выглядеть ваш файл .hhc:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<!-- Sitemap 1.0 -->
</HEAD><BODY>
<OBJECT type="text/site properties">
<param name="Window Styles" value="0x800025">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Глава 1 - От автора">
<param name="Local" value="1_Глава-1.htm">
</OBJECT>
</LI>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Глава 2 - Введение">
<param name="Local" value="2_Глава-2.htm">
</OBJECT>
</LI>
<!--здесь продолжаем описывать каждую страницу, которая должна быть в оглавлении-->
<!--можно пользоваться вложенными списками UL для создания иерархии подэлементов-->
<UL>
</BODY>
</HTML>
Атрибут value с объекта param с name=»Name» содержит название страницы, то что видит пользователь. Атрибут value с объекта param с name=»Local» содержит имя файла соответствующей страницы.

Файл ключевых слов (индексный) .hhk

Этот компонент проекта не является обязательным. Он содержит ключевые слова, по которым пользователь сможет легче найти требуемый ему раздел. В нём задаётся перечень ключевых слов и страниц на которых они встречаются. То что пользователь видит на вкладке «Указатель» навигационной панели, если таковая присутствует. По структуре он является точно таким как и файл .hhc, за исключением того что атрибут value с объекта param с name=»Name» содержит не название страницы, а ключевое слово. А также на одну и ту же страницу или её части (заданные смещением с помощью # – гиперссылок, локальных) могут указывать несколько ключевых слов. Создать качественный указатель не так уж легко, а иногда и невозможно.

Компиляция проекта

Ну вот, собственно и последний шаг – после подготовки всех нужных файлов для проекта, нужно его скомпилировать. Для удобной работы hhc.exe желательно скопировать в одну из системных папок, например C:\WINDOWS\. Дальше запускаем командную строку и пишем и выполняем команду:

C:\>hhc project.hhp
после чего, при успешном выполнении в папке с проектными файлами получаем нашу справку в формате chm.

Примечание: html-страницы могут иметь в названии кириллицу, но вспомогательные файлы (рисунки), не должны, ибо в таком случае не будут скомпилированы в конечный chm-документ. В этом случае перед сборкой нужно переименовать соответсвующие файлы латиницей.

Изложенным в этой статье методом я создал не одну «справку» в формате chm. Вот, кому интересно, предлагаю посмотреть как выглядит книга в одном файле, содержащая 11 лекций по проектированию систем искусственного интеллекта из сайта www.intuit.ru. Там сделан и указатель (.hhk-файл и сам проект .hhp а .hhc куда-то потерялся). Размер этого произведения 940 Кб, а в веб-страницах свыше 2 Мб и десятки файлов.

 
Понравился пост? Поделись с другими!
Теги: , , , ,

Есть 2 коммент. к “Создание chm с помощью компилятора hhc.exe”

  1. Октябрь 14th, 2012 at 13:30
    1

    нашел ваш пост на u-proga.net – отправил в закладки

  2. Август 4th, 2013 at 16:08
    2

    Интересненько, изучим, опробуем

Написать комментарий

   b2bbonbone