Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   [решено] Конвертирование Winhlp-файла (*.hlp) в chm/pdf/html (http://forum.oszone.net/showthread.php?t=313045)

The_Immortal 23-03-2016 14:46 2619085

Конвертирование Winhlp-файла (*.hlp) в chm/pdf/html
 
Всех приветствую!

Как известно, начиная с Windows Vista существует проблема при открытии hlp-файлов. Возникла необходимость сконвертировать данный файл в chm/pdf/html (по большому счету неважно куда). Гуглил... В основном попадал вот сюда, но выйти на указанную там программу не удалось.

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


Спасибо!

MKN 23-03-2016 15:10 2619092

Цитата:

Цитата The_Immortal
Как известно, начиная с Windows 7 существует проблема при открытии hlp-файлов. »

Дык эту проблему сразу же и решили... Windows6.1-KB917607 - установлен ?
http://www.microsoft.com/en-us/downl...ils.aspx?id=91

Казбек 24-03-2016 00:01 2619127

Цитата:

Цитата The_Immortal
но выйти на указанную там программу не удалось. »

Какую? Эту?

The_Immortal 27-03-2016 20:45 2620420

MKN,
Цитата:

Цитата MKN
Дык эту проблему сразу же и решили... »

Эту проблему очень сложно решать на компьютерах всех пользователей, у которых будет установлен соответствующий продукт. Проще организовать нормальный файл-справку, который 100% будет открываться везде.

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

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

MKN 28-03-2016 09:19 2620539

Цитата:

Цитата The_Immortal
Эту проблему очень сложно решать на компьютерах всех пользователей, у которых будет установлен соответствующий продукт. »

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

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

The_Immortal 28-03-2016 13:50 2620626

MKN,
Цитата:

Цитата MKN
Вообще то это решается элементарно - установкой нужного обновления.
Если под "соответствующим продуктом" подразумевается какой то инсталлятор с дремучим форматом хелпа, то что мешает включить нужное обновление в этот инсталлятор ? Обычная практика. »

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

Цитата:

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

Инструментария действительно полно. Но, как оказалось, нормально функционирующего не так много.

1. Находим подробнейшую инструкцию с привлечением бесплатных продуктов. Декомпилируем hlp-файл. Далее компилируем получившийся *.hpj (с сопутствующими файлами) через HTMLHelp Workshop - на выходе CHM-файл... с крякозябрами, хотя содержимое исходных файлов в порядке, а также код языка в hpj-файле указан русским.

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

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

Iska 28-03-2016 14:26 2620638

Цитата:

Цитата The_Immortal
Это раз. … Это два. »

После этого а) надо лепить свою версию инсталляции, б) отвалится контекстная справка из приложения.

Цитата:

Цитата The_Immortal
Так что не всё так просто, как показывается "практика". »

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

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

Charg 28-03-2016 14:37 2620642

Цитата:

Цитата The_Immortal
или же изначально снабдить продукт нормальным файлом справки? »

Вот это и надо делать. Только с 0, а не конвертируя старьё.
А то получается "я хочу свою копейку переделать в гоночный болид, но мужики на сто разводят руками... как бы мне такое провернуть?".

The_Immortal 28-03-2016 15:34 2620658

Iska,
Цитата:

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

Цитата:

Цитата The_Immortal
"Практика" показывает, что под Windows 10, к примеру, "элементарно" проблема не решается - под эту ОС есть соответствующее обновление? »

Цитата:

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

Я выше ссылался на инструкцию - подробнее уже и некуда. Это и была "разборка".


Charg,
Цитата:

Цитата Charg
Только с 0, а не конвертируя старьё. »

Ну почему же с 0? Ведь
Цитата:

Цитата MKN
инструментария полно. »


Amigos 28-03-2016 15:47 2620662

Цитата:

Цитата The_Immortal
а выходе CHM-файл... с крякозябрами »

Можете выложить на файло-обменник?

Iska 28-03-2016 16:23 2620678

Amigos, там в любом случае, с проекта и исходных файлов надо начинать.

The_Immortal 28-03-2016 16:37 2620683

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 больше ничего неизвестно? Судя по древности данной программы может так оно и есть. Только вот новее MS вроде как ничего не предложил. А другие продукты - платные.

И да, в главном конфигурационном файле исходников (*.hpj) среди прочего указано:
Код:

LCID=0x419 0x0 0x0
- это код языка, который эквивалентен русскому согласно данной таблице. Да и в настройках проекта Workshop'а также указан "Русский".
Так откуда же на выходе получается 1252?

MKN 28-03-2016 18:00 2620703

Цитата:

Цитата The_Immortal
"Практика" показывает, что под Windows 10, к примеру, "элементарно" проблема не решается - под эту ОС есть соответствующее обновление? »

И под эту ось всё также элементарно. :) И никакие обновления по сути не нужны, а нужно добавить в ОС
всего лишь несколько файлов.
К примеру, всё давно решено здесь :
http://www.tenforums.com/general-sup...dows-10-a.html

Цитата:

Цитата The_Immortal
или же изначально снабдить продукт нормальным файлом справки? »

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

The_Immortal 28-03-2016 18:22 2620715

MKN,
Цитата:

Цитата MKN
Ну, это было очевидно с самого начала, что гораздо разумнее изготовить новую справку, чем тратить время на конвертацию древней. »

Возможно, разумнее, но явно дольше (по крайней мере в моем случае), ибо проблему с конвертацией я решил. Но теперь интереса ради хочу понять в чем загвоздка.

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

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

Amigos 29-03-2016 08:20 2620835

Цитата:

Цитата The_Immortal
мне хочется понять почему так получается? »

Потому что поддержка символов вне ASCII есть в unicode.
А в 8 битных кодировках поддержка не-ASCII символов сделана костылями.
Эти костыли отваливаются, и их нужно возвращать на место.

Цитата:

Цитата The_Immortal
кроме 1252 HTML Help Workshop больше ничего неизвестно? »

Для американских продуктов, тем более таких древних, "это норма".


Время: 22:08.

Время: 22:08.
© OSzone.net 2001-