Войти

Показать полную графическую версию : [решено] Конвертирование Winhlp-файла (*.hlp) в chm/pdf/html


The_Immortal
23-03-2016, 14:46
Всех приветствую!

Как известно, начиная с Windows Vista существует проблема при открытии hlp-файлов. Возникла необходимость сконвертировать данный файл в chm/pdf/html (по большому счету неважно куда). Гуглил... В основном попадал вот сюда (https://msdn.microsoft.com/en-us/library/windows/desktop/ms524276%28v=vs.85%29.aspx), но выйти на указанную там программу не удалось.

Подскажите, пожалуйста, ПО или метод, при котором можно корректно сделать подобную конвертацию.


Спасибо!

MKN
23-03-2016, 15:10
Как известно, начиная с Windows 7 существует проблема при открытии hlp-файлов. »
Дык эту проблему сразу же и решили... Windows6.1-KB917607 - установлен ?
http://www.microsoft.com/en-us/download/details.aspx?id=91

Казбек
24-03-2016, 00:01
но выйти на указанную там программу не удалось. »
Какую? Эту (https://www.microsoft.com/en-us/download/details.aspx?id=21138)?

The_Immortal
27-03-2016, 20:45
MKN, Дык эту проблему сразу же и решили... »Эту проблему очень сложно решать на компьютерах всех пользователей, у которых будет установлен соответствующий продукт. Проще организовать нормальный файл-справку, который 100% будет открываться везде.

Казбек, благодарю. Но там оказывается идет речь про конвертирование hpj -> html. А у меня hlp-файл.

Вопрос открыт.

MKN
28-03-2016, 09:19
Эту проблему очень сложно решать на компьютерах всех пользователей, у которых будет установлен соответствующий продукт. »
Вообще то это решается элементарно - установкой нужного обновления.
Если под "соответствующим продуктом" подразумевается какой то инсталлятор с дремучим форматом хелпа, то что мешает включить нужное обновление в этот инсталлятор ? Обычная практика.
Также "обычной практикой" является обновление своей ОС, пользователями (или админами). Было бы сделано вовремя обновление, не было бы таких странных, вернее, детских "проблем".

А что касается конвертирования .hlp в другие форматы, то инструментария полно.
Достаточно в гуле набрать hlp to chm(или в иной формат)

The_Immortal
28-03-2016, 13:50
MKN,Вообще то это решается элементарно - установкой нужного обновления.
Если под "соответствующим продуктом" подразумевается какой то инсталлятор с дремучим форматом хелпа, то что мешает включить нужное обновление в этот инсталлятор ? Обычная практика. »"Практика" показывает, что под Windows 10, к примеру, "элементарно" проблема не решается - под эту ОС есть соответствующее обновление? Это раз.
Даже, если в первом случае есть решение, то что логичнее - нагружать свой продукт обновлением, которое необходимо лишь для корректного чтения "дремучего формата хелпа" (который действительно уже дремучий), или же изначально снабдить продукт нормальным файлом справки? Это два.

А что касается конвертирования .hlp в другие форматы, то инструментария полно.
Достаточно в гуле набрать hlp to chm(или в иной формат) »Инструментария действительно полно. Но, как оказалось, нормально функционирующего не так много.

1. Находим подробнейшую инструкцию (http://www.help-info.de/en/Help_Info_WinHelp/hw_converting.htm) с привлечением бесплатных продуктов. Декомпилируем hlp-файл. Далее компилируем получившийся *.hpj (с сопутствующими файлами) через HTMLHelp Workshop - на выходе CHM-файл... с крякозябрами, хотя содержимое исходных файлов в порядке, а также код языка в hpj-файле указан русским.

2. Берем готовый коммерческий продукт - Help & Manual (http://www.helpandmanual.com/). Там есть возможность сконвертировать hlp-файл без каких-либо лишних телодвижений (типа ручных декомпиляций). И на выходе получаем... Крякозябры :)

Так что не всё так просто, как показывается "практика". Возможно, что проблема в самом hlp-файле, но визуально он в порядке.

Iska
28-03-2016, 14:26
Это раз. … Это два. »
После этого а) надо лепить свою версию инсталляции, б) отвалится контекстная справка из приложения.

Так что не всё так просто, как показывается "практика". »
Для начала стоит разобраться в обеих форматах справки. Тогда «кракозябр» не будет.

Или просто использовать указанное KB.

Charg
28-03-2016, 14:37
или же изначально снабдить продукт нормальным файлом справки? »
Вот это и надо делать. Только с 0, а не конвертируя старьё.
А то получается "я хочу свою копейку переделать в гоночный болид, но мужики на сто разводят руками... как бы мне такое провернуть?".

The_Immortal
28-03-2016, 15:34
Iska, Или просто использовать указанное KB. »"Практика" показывает, что под Windows 10, к примеру, "элементарно" проблема не решается - под эту ОС есть соответствующее обновление? »

Для начала стоит разобраться в обеих форматах справки. Тогда «кракозябр» не будет. »Я выше ссылался на инструкцию - подробнее уже и некуда. Это и была "разборка".


Charg, Только с 0, а не конвертируя старьё. »Ну почему же с 0? Ведьинструментария полно. »

Amigos
28-03-2016, 15:47
а выходе CHM-файл... с крякозябрами »Можете выложить на файло-обменник?

Iska
28-03-2016, 16:23
Amigos, там в любом случае, с проекта и исходных файлов надо начинать.

The_Immortal
28-03-2016, 16:37
Amigos, полностью справку выложить не могу, а часть выложить получится. Точнее я выложу исходники, ибо скомпилированный chm ничего не даст.


Но в общем-то проблема найдена. HTML Help Workshop после загрузки hpj-файла (со всеми прилегающими файлами) создает для каждого раздела отдельную html-страницу, в заголовке которой указано:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=Windows-1252">Проблема в кодировке: "Windows-1252" - её достаточно поменять на 1251 и далее скомпилированный chm будет в порядке.

Но всё же интересно почему устанавливается именно такая кодировка? Или кроме 1252 HTML Help Workshop больше ничего неизвестно? Судя по древности (http://content.screencast.com/users/The_Immortal/folders/Snagit/media/ab992815-e2d5-4427-82c9-4054d7c5207d/03.28.2016-16.55.png) данной программы может так оно и есть. Только вот новее MS вроде как ничего не предложил. А другие продукты - платные.

И да, в главном конфигурационном файле исходников (*.hpj) среди прочего указано:
LCID=0x419 0x0 0x0 - это код языка, который эквивалентен русскому согласно данной (http://www.science.co.il/Language/Locale-codes.asp) таблице. Да и в настройках проекта Workshop'а также указан (http://content.screencast.com/users/The_Immortal/folders/Snagit/media/5638e89e-4c04-4f6a-86f7-1e07c61caea0/03.28.2016-17.07.png) "Русский".
Так откуда же на выходе получается 1252?

MKN
28-03-2016, 18:00
"Практика" показывает, что под Windows 10, к примеру, "элементарно" проблема не решается - под эту ОС есть соответствующее обновление? »
И под эту ось всё также элементарно. :) И никакие обновления по сути не нужны, а нужно добавить в ОС
всего лишь несколько файлов.
К примеру, всё давно решено здесь :
http://www.tenforums.com/general-support/16982-cant-read-older-hlp-files-windows-10-a.html

или же изначально снабдить продукт нормальным файлом справки? »
Ну, это было очевидно с самого начала, что гораздо разумнее изготовить новую справку, чем тратить время на конвертацию древней. Но раз был сделан упор на второй вариант... :) , то как следствие было много вышесказанных слов...

The_Immortal
28-03-2016, 18:22
MKN, Ну, это было очевидно с самого начала, что гораздо разумнее изготовить новую справку, чем тратить время на конвертацию древней. »Возможно, разумнее, но явно дольше (по крайней мере в моем случае), ибо проблему с конвертацией я решил. Но теперь интереса ради хочу понять в чем загвоздка.

В общем, вот исходники (http://rghost.ru/private/7fwCBwYDM/5a5300e78f3c89f9172494a448a026b9) урезанной справки и HTML Help Workshop (http://rghost.ru/6F7r7ZdJQ). Открываем HTML Help Workshop -> File -> New -> Project -> отмечаем "Convert WinHelp project" -> выбираем *.hpj-файл из каталога Source и указываем имя файла hhp-проекта.
Далее можно компилировать, но в секции FILES получившегося проекта предварительно можно открыть какую-либо html-страницу и увидеть, что кодировка там задана неверная. Как бы исправить её ничего не стоит, но мне хочется понять почему так получается?

Кто-нибудь знает ответ на этот вопрос? :)

Amigos
29-03-2016, 08:20
мне хочется понять почему так получается? »Потому что поддержка символов вне ASCII есть в unicode.
А в 8 битных кодировках поддержка не-ASCII символов сделана костылями.
Эти костыли отваливаются, и их нужно возвращать на место.

кроме 1252 HTML Help Workshop больше ничего неизвестно? »Для американских продуктов, тем более таких древних, "это норма".




© OSzone.net 2001-2012