Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


HTMLHelp (Microsoft Compressed HTML Help, Microsoft Compiled HTML Help, .CHM) e проприетарен формат на файл за контекстна справка, дело на корпорация Microsoft. Този формат е създаден през 1997г, за да замести формат WinHelp. На практика е компресиран комплект по алгоритмом LZX, съдържащ HTML страници. Възможно е да се добавят хиперлинкове, адреси към вътрешни страници, предметен указател, търсачка.

В операционна система Windows има вградено средство за преглед на CHM файлове още от времето на Windows 98 и Windows NT.

Тези системи са мъртви, а аз отдавна съм дал предпочитание на Ubuntu. Има много електронни книги в този формат и миграцията към Ubuntu не трябва да ги поставя под въпрос, а той е как да отворя CHM файл под Ubuntu?
Ubuntu с лекота се справя с поставената задача. Тук обаче изгря един малък нюанс между двете системи и най-вече причина се оказа firefox.

Броузър Moziila Firefox се обнови на моята система до версия 7. С новото обаче спря да работи старото. Firefox предлага add-on за преглед на CHM файлове - ACHM Reader. Този add-on към дата на публикация отказа да работи. Намирах го най-удачен за целта. Какво правим тогава?
Питаме Ubuntu Software Center за CHM. Предложенията не са много, даже малко.
Отпада KchmViewer. Той е за KDE, а аз на Gnome. Инсталацията му ще натресе хиляди найлонови чували с барабонки.

E-book reader. Това чудо се оказа някакъв бъзик. Аха да тръгне и се скрие. На всичко отгоре с интерфейс, изискващ IQ > 100. Я Айнщайн да си го ръчка в междучасието.

ChmViewer. Това при опит за инсталация ме наплю, че съм нямал дрън-дрън библиотеки и питона ми се дави. Пратих го да маха на магистралата.

И нещата се свиха до две оскъдни предложения:
  • xCHM
  • ChmSee
Програмите работят коректно. Те обаче не могат да остраняват грешки на създателите на CHM файлове писани на кирилица. Кирилицата е виновна, а това се дължи на Windows. И за да стане ясно привеждам следните примери с няколко електронни книги. Нека ги наречем CSS.chm и PHP.chm. Не намирам такива на български, за това се позовавам на руската кирилица.
xCHM
При преглед с xCHM гърми кирилицата в главния прозорец (снимката горе). Същото под ChmSee - гърми кирилицата в съдържанието. Както и да го приемеш все криво стои.
ChmSee
Нека си припомним от анонса какво е CHM файл. Защо тогава не го декомпресираме и погледнем от близо каква е причината.

За целта инсталираме archmage. След което стартираме конзолата и пишем семпла команда

archmage <chm.file> <outputdir>

Ясно, че chm.file е същинското име на CHM файла, а след него е произволно име на каталога, в когото ще се извлече съдържанието му.
декомпресия на CHM файл
В резултат получавам очаквана структура на статичен сайт.

index.html e приветствен екран.
arch_contents.html се оказва iframe.

Този фрейм организира съдържанието. Погледнат отвътре index.html имат мета таг <meta charset="utf-8" />, докато arch_contents.html няма.

Ubuntu работи с модерна кодировка UTF-8, докато Windows не. Под руска локализация Windows работи с cp1251. Авторът на CSS.chm не се е усетил и на лице идват кривите му ръце.
spoiler :
<html>
<head>
<title>css.chm</title>
<LINK rel="Stylesheet" type="text/css" href="arch_css.css">
</head>

<body onload="setInterval('getLoc()', 500);">
<script>
var lastDoc;
var contents =
[
["Êàê ïîëüçîâàòüñÿ ñïðàâî÷íèêîì", "index.html", "1"],
["Ñåëåêòîðû", "", "1",
["Óíèâåðñàëüíûé ñåëåêòîð", "selector/universal.html", "1"],
["Ñåëåêòîðû òåãîâ", "selector/tag.html", "1"],
["Êîíòåêñòíûå ñåëåêòîðû", "selector/context.html", "1"],
["Êëàññû", "selector/class.html", "1"],
["Ìóëüòèêëàññû", "selector/multiclass.html", "1"],
["Èäåíòèôèêàòîðû", "selector/id.html", "1"],
["Äî÷åðíèå ñåëåêòîðû", "selector/child.html", "1"],
["Ñîñåäíèå ñåëåêòîðû", "selector/ajacent.html", "1"],
["Ñåëåêòîðû àòðèáóòîâ", "selector/attribute.html", "1"]],
["Çíà÷åíèÿ", "", "1",
["Ñòðîêè", "value/string.html", "1"],
["×èñëà", "value/number.html", "1"],
["Ïðîöåíòû", "value/percent.html", "1"],
["Đàçìåð", "value/size.html", "1"],
["Àäðåñ", "value/url.html", "1"],
["Öâåò", "value/color.html", "1"],
["inherit", "value/inherit.html", "1"],
["initial", "value/initial.html", "1"]],
["Ïî àëôàâèòó", "", "1",
["!", "", "1",
["!important", "css/!important.html", "1"]],
["@", "", "1",
["@charset", "css/@charset.html", "1"],
["@font-face", "css/@font-face.html", "1"],
["@import", "css/@import.html", "1"],
["@media", "css/@media.html", "1"],
["@page", "css/@page.html", "1"]],
["A", "", "1",
[":active", "css/ac
Не бързайте с заключенията. Авторът на PHP.chm е ползвал редактор с изключен BOM по всяка вероятност и грижливо е добавил на всяка страница:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

В резултат четима кирилица в главен прозорец и съдържание.
xCHM







до нови срещи   ^.^
02.09.2011 profruit 


1 Response to "CHM файл под Ubuntu"

  1. #/bin/bash Said,

    Calibre е отговора за електронна библиотека на компютър. Подъържа почти всичко (да не казвам всичко) - включително и тоя формат. А и се оправя отлично с объркани кодировки. :)

     

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога