Come aprire e convertire documenti CHM?


9

Ho alcuni documenti in un .chmformato. Mi chiedevo se esiste un formato di file che può essere più facile da navigare, supportato e di uguale dimensione in Ubuntu?

Se c'è, vorrei iniziare a convertire tutti quei libri e probabilmente usarli con meno problemi su tutti i miei PC Ubuntu e il mio telefono Android.


Risposte:


13

Puoi convertirli in PDF usando il programma da riga di comando chm2pdf ( installa chm2pdf qui ). Una volta installato è possibile eseguire il comando da un terminale in questo modo:

chm2pdf --book in.chm out.pdf

Nel caso in cui non lo sapessi, ci sono diversi lettori di chm disponibili: basta cercare chmnel Software Center.

Puoi anche estrarre i file chm in html usando lo strumento da riga di comando 7-Zip ( installa p7zip-full qui ):

7z x file.chm

La conversione PDF non è una soluzione che sto cercando. Eppure, grazie per la tua rapida risposta. Più idee?
Julio,

3

Se non vuoi usare il PDF, suggerirei Epub, un formato di e-book aperto abbastanza buono, puoi installare un buon lettore per esso chiamato Calibre su Ubuntu, Calibre ha un'utile funzione di conversione che può importare file chm e poi convertili in altri formati inclusi epub. epub può essere facilmente letto anche sulla maggior parte degli smartphone e tablet.

Calibre può essere installato dal centro software.


2

C'è anche KChmViewer, se preferisci KDE.


KChmViewer è ok. ma preferirei l'addon di Firefox [CHM Reader]. Non è una buona soluzione per il mio problema, poiché desidero eliminare quei file chm scadenti che ho già in un formato supportato meglio. Pdf non è neanche buono. Opzioni?
Julio,



0

dv3500ea ha un'ottima risposta chm2pdf , ma preferisco leggerli come file html.

In breve:

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

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

Quindi apri ./outdir/index.htmlper visualizzare i file html convertiti! Yaaay! Molto meglio. Ora posso navigare come un file .chm, ma posso anche usare il mio browser Chrome per cercare testo nelle pagine, stampare facilmente, ecc.

Facciamo un comando chiamato chm2html

Ecco una bella sceneggiatura che ho scritto.

  1. Copia e incolla lo script seguente in un file chm2html.py
  2. Renderlo eseguibile: chmod +x chm2html.py
  3. Crea una ~/bindirectory se non ne hai già una:mkdir ~/bin
  4. Crea un link simbolico a chm2html.py nella tua ~/bindirectory:ln -s ~/path/to/chm2html.py ~/bin/chm2html
  5. Disconnettersi da Ubuntu, quindi riconnettersi o ricaricare i percorsi con source ~/.bashrc
  6. Usalo! chm2html myFile.chm. Questo converte automaticamente il file .chm e posiziona i file .html in una nuova cartella chiamata ./myFile, quindi crea un collegamento simbolico chiamato a ./myFile_index.htmlcui punta ./myFile/index.html.

chm2html.py file:

#!/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.")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.