¿Cómo abrir y convertir documentos CHM?


9

Tengo algunos documentos que están en un .chmformato. Me preguntaba si hay un formato de archivo que sea más fácil de navegar, compatible y de igual tamaño de archivo en Ubuntu.

Si es así, me gustaría comenzar a convertir todos esos libros y probablemente usarlos con menos problemas en todas mis PC Ubuntu y mi teléfono Android.


Respuestas:


13

Puede convertirlos a PDF utilizando el programa de línea de comandos chm2pdf ( instale chm2pdf aquí ). Una vez instalado, puede ejecutar el comando desde un terminal como este:

chm2pdf --book in.chm out.pdf

En caso de que no lo supiera, hay varios lectores chm disponibles, solo busque chmen el Centro de software.

También puede extraer archivos chm a html usando la herramienta de línea de comandos 7-Zip ( instale p7zip-full aquí ):

7z x file.chm

La conversión de PDF no es una solución que estoy buscando. Sin embargo, gracias por su rápida respuesta. ¿Más ideas?
Julio

3

Si no desea utilizar PDF, le sugeriría Epub, un formato de libro electrónico bastante bueno y abierto, puede instalar un buen lector llamado Calibre en Ubuntu, Calibre tiene una función de conversión útil que puede importar archivos chm y luego convertirlos a otros formatos epub incluidos. Los epubs también se pueden leer fácilmente en la mayoría de los teléfonos inteligentes y tabletas.

Calibre se puede instalar desde el centro de software.


2

También hay KChmViewer, si prefiere KDE.


KChmViewer está bien. pero preferiría el complemento de Firefox [CHM Reader]. No es una buena solución para mi problema, ya que quiero deshacerme de esos pésimos archivos chm que ya tengo en un formato mejor soportado. Pdf tampoco es bueno. Opciones?
Julio



0

dv3500ea tiene una excelente respuesta de chm2pdf , pero prefiero leerlos como archivos html.

En breve:

sudo apt-get install libchm-bin
extract_chmLib myFile.chm outdir

Fuente: http://www.ubuntugeek.com/how-to-convert-chm-files-to-html-or-pdf-files.html

¡Entonces ábrase ./outdir/index.htmlpara ver los archivos html convertidos! Yaaay! Mucho mejor. Ahora puedo navegarlo como un archivo .chm, pero también puedo usar mi navegador Chrome para buscar texto en las páginas, imprimir fácilmente, etc.

Hagamos un comando llamado chm2html

Aquí hay un buen guión que escribí.

  1. Copie y pegue el siguiente script en un archivo chm2html.py
  2. Hazlo ejecutable: chmod +x chm2html.py
  3. Crea un ~/bindirectorio si aún no tienes uno:mkdir ~/bin
  4. Haga un enlace simbólico a chm2html.py en su ~/bindirectorio:ln -s ~/path/to/chm2html.py ~/bin/chm2html
  5. Cierre sesión en Ubuntu y luego vuelva a iniciar sesión, o vuelva a cargar sus rutas con source ~/.bashrc
  6. Úsalo! chm2html myFile.chm. Esto convierte automáticamente el archivo .chm y coloca los archivos .html en una nueva carpeta llamada ./myFile, luego crea un enlace simbólico llamado al ./myFile_index.htmlque apunta ./myFile/index.html.

chm2html.py archivo:

#!/usr/bin/python3

"""
chm2html.py
- convert .chm files to .html, using the command shown here, with a few extra features (folder names, shortcuts, etc):
http://www.ubuntugeek.com/how-to-convert-chm-files-to-html-or-pdf-files.html
- (this is my first ever python shell script to be used as a bash replacement)

Gabriel Staples
www.ElectricRCAircraftGuy.com 
Written: 2 Apr. 2018 
Updated: 2 Apr. 2018 

References:
- http://www.ubuntugeek.com/how-to-convert-chm-files-to-html-or-pdf-files.html
  - format: `extract_chmLib book.chm outdir`
- http://www.linuxjournal.com/content/python-scripts-replacement-bash-utility-scripts
- http://www.pythonforbeginners.com/system/python-sys-argv

USAGE/Python command format: `./chm2html.py fileName.chm`
 - make a symbolic link to this target in ~/bin: `ln -s ~/GS/dev/shell_scripts-Linux/chm2html/chm2html.py ~/bin/chm2html`
   - Now you can call `chm2html file.chm`
 - This will automatically convert the fileName.chm file to .html files by creating a fileName directory where you are,
then it will also create a symbolic link right there to ./fileName/index.html, with the symbolic link name being
fileName_index.html

"""


import sys, os

if __name__ == "__main__":
    # print("argument = " + sys.argv[1]); # print 1st argument; DEBUGGING
    # print(len(sys.argv)) # DEBUGGING

    # get file name from input parameter
    if (len(sys.argv) <= 1):
        print("Error: missing .chm file input parameter. \n"
              "Usage: `./chm2html.py fileName.chm`. \n"
              "Type `./chm2html -h` for help. `Exiting.")
        sys.exit()

    if (sys.argv[1]=="-h" or sys.argv[1]=="h" or sys.argv[1]=="help" or sys.argv[1]=="-help"):
        print("Usage: `./chm2html.py fileName.chm`. This will automatically convert the fileName.chm file to\n"
              ".html files by creating a directory named \"fileName\" right where you are, then it will also create a\n"
              "symbolic link in your current folder to ./fileName/index.html, with the symbolic link name being fileName_index.html")
        sys.exit()

    file = sys.argv[1] # Full input parameter (fileName.chm)
    name = file[:-4] # Just the fileName part, withOUT the extension
    extension = file[-4:]
    if (extension != ".chm"):
        print("Error: Input parameter must be a .chm file. Exiting.")
        sys.exit()

    # print(name) # DEBUGGING
    # Convert the .chm file to .html
    command = "extract_chmLib " + file + " " + name
    print("Command: " + command)
    os.system(command)

    # Make a symbolic link to ./name/index.html now
    pwd = os.getcwd()
    target = pwd + "/" + name + "/index.html"
    # print(target) # DEBUGGING
    # see if target exists 
    if (os.path.isfile(target) == False):
        print("Error: \"" + target + "\" does not exist. Exiting.")
        sys.exit()
    # make link
    ln_command = "ln -s " + target + " " + name + "_index.html"
    print("Command: " + ln_command)
    os.system(ln_command)

    print("Operation completed successfully.")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.