jueves, 19 de marzo de 2009

Manejando archivos CHM en Linux

Buscaba un CD con información técnica que necesitaba. El primer problema fue encontrarlo entre las tortas de CD sin etiquetar (o peor, mal etiquetadas) que tengo desparramadas por toda mi casa. Luego de un par de horas de búsqueda (y de maldecir mi desorden) finalmente lo encontré.

Allí estaba el maldito archivo. Pero ahí me surgió un segundo problema: era un archivo CHM y yo tenía necesitaba abrirlo desde Linux.

Los Windowseros conocen los CHM (Microsoft Compiled HTML Help), un formato propietario de documentación de Microsoft usado generalmente para archivos de ayuda. Un archivo CHM contiene páginas enlazadas (de manera similar a la utilizada en documentos HTML) indexadas y hasta un buscador. Todo el conjunto está comprimido en LZX.

Debido a fallos de seguridad encontrados este formato, Microsoft lo cambió por uno nuevo llamado Microsoft Assistance Markup Language a partir de Window$ Vista.

El tema era como abrirlos desde mi PC con Ubuntu Intrepid Ibex...

1) Lectores de archivos CHM para Linux

Después de una breve búsqueda encontré los siguientes visores de archivos CHM:

a) GnoCHM

GnoCHM es un visor de archivos CHM escrito en Python y pensado para Gnome. Es el que finalmente elegí en mi caso. Está disponible para otras distribuciones como Fedora y Gentoo.

Para instalarlo (en Debian/Ubuntu), desde la consola ejecutamos:

sudo apt-get install gnochm

Luego de instalar, podemos ejecutarlo desde el menú Aplicaciones/Accesorios/Visualizador CHM o desde la consola tipeando gnochm.

Aquí pueden ver como se ve gnochm en acción:

b) kchmviewer

KchmViewer está escrito en C++ y requiere de las librerías gráficas Qt4 o las del escritorio KDE 4.

No tuve tiempo de probarlo. Les dejo ese trabajo a ustedes.


c) xCHM


Si no tenemos Gnome ni KDE podríamos usar xCHM. Este visor tiene la peculiaridad de ser multiplataforma, con lo cual podemos instalarlo en Window$ si queremos.

La instalación es también sencilla:

sudo apt-get install xchm

Luego de instalarlo, lo tendremos disponible (en el caso de Ubuntu) en el menú Aplicaciones/Oficina/xCHM. También podemos ejecutarlo desde la consola ingresando xchm.

Acá pueden ver como se ve xCHM:


d) Okular

Okular es una nueva aplicación (basada en KPDF) disponible en KDE 4 que nos permite leer archivos Postscript, PDF, djvu y por supuesto CHM.

En este enlace puden observar el listado completo de formatos de documentos que es posible visualizar con Okular:

http://okular.kde.org/formats.php

Si tienen Kubuntu o su Linux tiene KDE 4 esta debería ser la mejor opción.


e) CHM Viewer

CHMViewer es un agregado para Mozilla Firefox que permite visualizar estos archivos . Es útil porque, al depender de Firefox, podemos tenerlo disponible también en Window$.

Para agregarlo, vamos al menú Herramientas/Agregados. Luego, en esta ventana pulsamos el botón Obtener agregados.


Bien, en el cuadro de búsqueda escribimos chm. Esto nos traerá el agregado que buscamos. Pulsamos el botón Agregar a Firefox y luego de unos segundos aparecerá una ventana como la siguiente:



Finalmente, pulsamos el botón Instalar y reiniciamos Firefox.

Otra forma más directa es dirigirnos con Firefox a:

https://addons.mozilla.org/en-US/firefox/addon/3235

Hacemos click en el enlace Add to Firefox y seguimos los pasos que nos indica la instalación que son similares a los ya comentados.

Luego de reiniciar nuestro navegador podremos levantar archivos CHM desde el menú Archivo/Open CHM Files.

Asi veríamos un CHM con este agregado:


Si queremos tener más a mano esta opción, podemos agregarlo a la barra lateral de Firefox. Es decir, vamos al menú Ver/Barra Lateral y tildamos CHM Reader.


2) Extrayendo archivos HTML desde archivos CHM

Bien, mi problema de visualizar estos archivos estaba solucionado. Pero no quedó ahí mi inquietud y quise dar un paso más: extraer los archivos HTML que contiene el CHM. De esta manera, me independizaría de los visualizadores y podría editarlos.

Para ello, debemos instalar la librería libchm-bin:

sudo apt-get install libchm-bin

Ahora, para extraer los HTML de un archivo como pepe.chm en el directorio pepe hacemos:

$ extract_chmLib pepe.chm pepe/

En este directorio vamos a tener varios archivos y un directorios. Nos interesa en particular el directorio pepe/res/ en donde tendremos todos los HTML. El resto es información complementaria del archivo origen.


3) Convirtiendo archivos CHM a PDF

¿Podríamos transformar los CHM a PDF? ¡Por supuesto!

Para ello se necesita un script escrito en Python llamado chm2pdf.

sudo apt-get install chm2pdf

Para usarlo, necesitamos saber si el archivo es contiene HTML no estructurado o HTML estructurado. Los archivos CHM con HTML estructurado son aquellos que contienen encabezados, capítulos, etc. Para convertirlos hacemos:

a) CHM no estructurado a PDF

$ chm2pdf --webpage pepe.chm

b) CHM no estructurado a PDF

$ chm2pdf --book nombre.chm

Ambos comandos nos crearán un llamado pepe.pdf.

Ya vimos que con extract_chmLib podíamos extraer los documentos HTML. Con chm2pdf también podemos hacerlo con el siguiente comando:

$ chm2pdf –-extract-only pepe.chm

Los documentos HTML se guardarán en /tmp/chm2pdf/orig/.

Nota: Lamentablemente, esta opción no la he podido hacer andar :(

El script chm2pdf tiene muchas opciones (como por ejemplo, configurar el tamaño de página o los márgenes). Para conocerlas, ejecutamos:

$ chm2pdf --help


Enlaces:

Cómo convertir archivos CHM a PDF con chm2pdf
Convert CHM files to PDF in Linux
Viewing CHM files in Linux (With installation instructions for Ubuntu)

6 comentarios:

Marco dijo...

Hola.

Me resultó muy útil tu post, y CASI resolví mis problemas, instalé GnoCHM para abrir un libro .chm y funcionó para el texto, pero las figuras no las abre, me dice que no estan activados los enlaces HTTP. No se si podrías orientarme sobre como activarlos.

Tengo Ubuntu 8.04

Gracias.

Marco dijo...

Hola.

Ya lo solucioné, solo instale el programa que depende de Firefox y ya.

Gracias por escribir las opciones.

Fallen Lids dijo...

Gracias por la info! Muy útil.

Leí tu perfil y vi que te gusta FRANCISCO BOCHATON, a mi me encanta (no conozco a nadie que lo escuche aparte de mi hermana, jaja).

Saludos enormes!


Florencia

Federico Ch. Tomasczik dijo...

Florencia:

Muchas gracias!

Bueno, ahora conoces a otro más que escucha al ex Peligrosos Gorriones.

Al menos hoy tenemos la certeza que somo 3 los fans de Bochatón.

Saludos!

Federico Ch. Tomasczik

Martosfre dijo...

Muy buen post!!! G

Chacho Peñaloza dijo...

Francisco,

A mi me vino muy bien el xCHM (12 Mb). Intenté descargar el Okular y eran 272 Mb así que desistí. Tengo un Ubuntu Lucid Lynx con Gnome y el xCHM me ha sido útil.

Saludos