Можно ли создать индекс для файла CHM? - PullRequest
0 голосов
/ 16 августа 2011

Я использую файл CHM, у которого нет индекса и который затрудняет поиск.

Можно ли каким-то образом декомпилировать его и воссоздать с индексом?

1 Ответ

1 голос
/ 17 августа 2011

Что вы хотите, способ создать инструмент, чтобы сделать это, или инструмент, который делает это легко для вас?У меня нет последнего, но я знаю способ сделать первое.(и это форум для программирования: -)

Следующая программа / скрипт delphi / freepascal загружает многофайловый HTML-вывод из HTML-конвертера latex 2 (tex4ht), исправляет неработающие ссылки, восстанавливает оглавление и складываетотдельный (kwd) файл с ключевыми словами в индексе.

http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/compilelatexchm.pp?view=markup&root=docs

Вы можете попытаться улучшить это с помощью процедуры синтаксического анализа html для сканирования ключевых слов, фильтрации их вручную, а затем подачивернемся к измененному сценарию, начиная с вывода декомпрессора CHM.(Инструменты декомпрессии CHM поставляются с Free Pascal 2.4.4, они также могут хранить внутренние файлы CHM в простых файлах, поэтому их можно использовать повторно при генерации)

Скрипт выглядит сложным, но это частично связано стот факт, что он переписывает код HTML (заголовки тем, мутации оглавления, исправление ссылок).


Обновление до комментариев ниже.

Пакет CHM не генерирует индексы.Инструмент документации (delphicodetodoc или fpdoc) должен передавать соответствующую информацию об индексировании компилятору CHM.Либо в виде XML, либо путем построения дерева, вызывающего различные методы.Если ваш html генерируется с помощью такого инструмента, как delphitodoc, безумно пытаться восстановить индекс самостоятельно, используя вышеуказанный метод.У инструмента есть представление более высокого уровня, которое может генерировать намного более качественный индекс, и, вероятно, будет меньше работы по его адаптации.

Обратите внимание, что я предполагаю, что вы действительно имеете в виду индекс, а не полный текст поиска, которыйautomatic.

Я не знаю, как работает delphicodetodoc (и из-за драконических требований к сборке я не буду пробовать), но проблемы звучат так, будто delphicodetodoc не так хорош в генерации CHM.

fpdoc имеет дизайнерское решение, что он не будет делать документы в исходном коде (считаются грязными), и я не думаю, что это изменится.

...