Заметил у Влада в блоге пост посвящённый созданию chm-справки с помощью Html Help Workshop и решил рассказать о своём опыте. Тем более что, в начале этого года я попробовал кучу редакторов для создания справки к программам и нашёл подходящий далеко не сразу. Сначала я хотел написать мини-обзор программ для создания chm справки, но при написании поста вдруг понял, что даже забыл какие из программ я тестировал, поэтому просто опишу историю написания хэлпа.
Одним весенним днём в наш программерский барак заглянуло начальство и сказало: "нужно сделать хэлп и интегрировать его в наши программы.". "Будет сделано!", дружно ответили программисты и устроили совещание. В ходе совещания были выявлены следующие типы справки:
- WinHelp (старая добрая справка с расширением .hlp)
- Html Help 1.x (.chm - Compiled Html Help)
- Html Help 2.x (освновное расширение файла - .hxs) - формат справки использующийся в Visual Studio и последних версиях Delphi. Да, это та самая справка котороая так раздражает большинство пользователей, привыкших к быстрой и точной справке в старых версиях Delphi.
- MS Help Viewer 1.0 - справочный движок для Visual Studio 2010. Выступает как замена формату MS Html Help 2.x. Самый новый.
- Windows Vista Assistance Platform Help - вообще, этот формат мы даже не рассматривали. Просто он попался мне на глаза на сайте Helpware при написании поста и я решил его упомянуть.
- Html, PDF и другие. В принципе, при нажатии F1 можно делать всё что угодно, в том числе открывать любые документы и вызывать любые программы. Так что, теоретически можно использовать и Html и Pdf и даже .doc-файлы. Другое дело, что организация поиска, просмотр содержимого и контроль за окном справки остаются на совести автора программы. Эти варианты мы всерьёз не рассматривали.
WinHelp мы решили не использовать как устаревший. К тому же программа для просмотра WinHelp файлов более не включается в состав Windows Vista и её требуется устанавливать отдельно (см. KB917607). Форматы MS Html Help 2.x и MS Help Viewer - предназначались только для Visual Studio, поэтому нам не подошли. Да и скажу честно, как человек привыкший к моментальному открытию справки в формате WinHelp и Chm, я так и не привык к тормозам справки Help 2.x в Delphi 2009/2010.
Вообще, ситуация выглядит довольно забавно, ведь оставшийся Html Help 1.x не поддерживают юникод на 100%. Хотя технически и возможно писать текст странички справки на нескольких языках, но полнотекстовый поиск и содержание будут работать корректно только с одним языком. Тем не менее, что-то же всё-таки надо выбрать, поэтому мы остановились на Html Help 1.x.
Далее мы стали искать удобный редактор для написания Chm Help-a в пределах 100$. Здесь стоит отметить, что изначально мы не знали о том, что Chm не поддерживает юникод полностью, поэтому наши тесты включали в себя создание в редакторе пары страниц, содержащих как русские так и латышские символы. Многие продукты вообще отказались генерировать справку для языка отличающегося от установленного на компьютере по умолчанию. Часть программ теряла латышские буквы, в заголовках страниц и содержании.
К сожалению, сейчас я не могу вспомнить все опробованные инструменты. Точно могу сказать, что смотрел Helpinator и HelpNDoc и они не прошли тестов. Такие продукты как InnovaSys HelpStudio (448$), Adobe RoboHelp (899$), Help&Manual (от 349$) мы не рассматривали из-за цены.
А остановили мы свой выбор на бесплатной программе для создания справки HelpMaker. Я опишу HelpMaker в следующем посте.
Также, мы вообще не рассматривали конвертеры, такие как Word2Hlp (OneClickHelp) или Word-2-Chm, заранее решив, что автоматически преобразовать Word-документ в chm ровно не сумеет никто. Как мне кажется сейчас, это было не самое разумное решение, и всё-таки следовало провести хотя бы пару тестов. Возможно, именно эти продукты позволили бы нам сэкономить кучу времени, потраченного на переформатирование статей.
Для интеграции справки в наши программы мы использовали юниты hh.pas и hh_util.pas с сайта http://helpware.net/delphi/. Там же доступен подробный туториал, описывающие теорию и практику работы с chm-справкой на самым низком уровне. Как это часто бывает, нигде в туториале не описаны базовые Delphi-классы-интерфейсы для интеграции справки в программу из юнита HelpIntfs.pas.
Ссылки по теме
- За и против Winhelp-а в Вики Help&Manual (англ.)
- Документация по Microsoft HTML Help 1.4 на сайте MSDN
- Microsoft HTML Help Downloads
- Скачать последнюю бесплатную версию HelpMaker - программы для создания chm справки.
- HelpWare.Net(англ) - сайт посвящённый справке. Я рекомендую начинать поиск любой технической информации о справке именно с этого сайта. Там есть FAQ-и по всем форматам справки. Там есть Tutorial по интеграции Chm-справки в Delphi-программы, там есть даже .pas-файлы, для работы с chm-справкой. Авторы этого сайта, являются авторами самого мощного инструмента для работы с файлами справки - FAR Help Manager. Несмотря на громкое название, думаю стоит уточнить, что FAR Help Manager не предназначен для написания справки и не содержит в себе удобных WYSIWYG-редакторов.
- Help-info.de (англ) - сайт посвящённый справке
- Темы посвящённые созданию справки на форуме SQL.RU: Тынц
- Не знаю как вам, а мне очень интересно посмотреть на продукты конкуренты Delphi. Например на MS Visual Studio 2010, и поэтому я иногда просматриваю блог о MS VS2010.
Покупая программы по моим партнёрским ссылкам, вы помогаете мне поддерживать блог.
Гм, chm-файл - это (грубо) просто набор HTML-файлов.
ОтветитьУдалитьВ чём была проблема указать UTF-8 кодировкой в charset?
В том, что никому не улыбалось вручную писать сотню html-файлов.
ОтветитьУдалитьМы искали WYSIWYG редактор, который бы сгенерировал эти HTML-файлы за нас. И лично я не нашёл ни одного редактора, который бы сгенерировал эти HTML-ы в UTF-8 кодировке.
К тому же, поддержка юникода в HTML Help ограничена:
HTML Help version 1.3x can display Unicode-encoded content (by using the Microsoft Web Browser control). The use of different languages within the same topic is not supported, and can cause problems when using the table of contents and indexing features. The ability to index and search Unicode content is not currently supported, but this functionality is under consideration for future releases.
Источник: KB269766, апрель, 2001.
Я лет 10 тому назад тоже протестировал много программ для изготовления help-ов и доки. Остановил выбор на Help & Manual - ни разу не пожалел :)
ОтветитьУдалитьЯ для интересу устанавливал Help&Manual и с ним-то как-раз проблем не было. И юникод поддерживался (в допустимых рамках), и язык для хэлпа можно указать любой. Но цена, оказалась за пределами нашего бюджета.
ОтветитьУдалитьПопробуйте Help & Manual 5, конечно он платный, но по сравнению с HelpMaker - выигрыш огромный, хотя бы по скорости компиляции справки. К сожалению бесплатный HelpMaker очень не радует нас показателями скорости сборки при больших объемах справки.
ОтветитьУдалитьПлюс Help & Manual 5 еще и в том что он предоставляет возможность выгрузки справки не только в формат chm но и в PDF и пр.
Лучшего решения, чем "Help & Manual" просто не найти.
ОтветитьУдалить