Comment ouvrir et convertir des documents CHM?


9

J'ai quelques documents qui sont dans un .chmformat. Je me demandais s'il existe un format de fichier qui peut être plus facile à naviguer, pris en charge et de taille de fichier égale dans Ubuntu?

Si tel est le cas, je voudrais commencer à convertir tous ces livres et probablement à les utiliser avec moins de tracas sur tous mes PC Ubuntu et mon téléphone Android.


Réponses:


13

Vous pouvez les convertir en PDF en utilisant le programme de ligne de commande chm2pdf ( installez chm2pdf ici ). Une fois installé, vous pouvez exécuter la commande à partir d'un terminal comme celui-ci:

chm2pdf --book in.chm out.pdf

Au cas où vous ne le sauriez pas, plusieurs lecteurs chm sont disponibles - recherchez simplement chmdans le Centre logiciel.

Vous pouvez également extraire des fichiers chm en html en utilisant l'outil de ligne de commande 7-Zip ( installez p7zip-full ici ):

7z x file.chm

La conversion PDF n'est pas une solution que je recherche. Pourtant, merci pour votre réponse rapide. Plus d'idées?
Julio

3

Si vous ne voulez pas utiliser le PDF, je suggère Epub, un format de livre électronique ouvert assez bon, vous pouvez installer un bon lecteur pour cela appelé Calibre sur Ubuntu, Caliber a une fonction de conversion utile qui peut importer des fichiers chm, puis les convertir dans d'autres formats epub inclus. Les epubs peuvent également être lus facilement sur la plupart des téléphones intelligents et des tablettes.

Calibre peut être installé à partir du centre logiciel.


2

Il y a aussi KChmViewer, si vous préférez KDE.


KChmViewer est OK. mais je préfère l'addon firefox [CHM Reader]. Pas une bonne solution pour mon problème, car je veux me débarrasser de ces fichiers chm moche que j'ai déjà à un meilleur format pris en charge. Le PDF n'est pas bon non plus. Des options?
Julio



0

dv3500ea a une excellente réponse chm2pdf , mais je préfère les lire sous forme de fichiers html.

En bref:

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

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

Ouvrez-vous ensuite ./outdir/index.htmlpour voir les fichiers html convertis! Yaaay! Bien mieux. Maintenant, je peux le parcourir comme un fichier .chm, mais je peux également utiliser mon navigateur Chrome pour rechercher du texte dans les pages, imprimer facilement, etc.

Faisons une commande appelée chm2html

Voici un joli script que j'ai écrit.

  1. Copiez et collez le script ci-dessous dans un fichier chm2html.py
  2. Rendez-le exécutable: chmod +x chm2html.py
  3. Créez un ~/binrépertoire si vous n'en avez pas déjà un:mkdir ~/bin
  4. Créez un lien symbolique vers chm2html.py dans votre ~/binrépertoire:ln -s ~/path/to/chm2html.py ~/bin/chm2html
  5. Déconnectez-vous d'Ubuntu puis reconnectez-vous ou rechargez vos chemins avec source ~/.bashrc
  6. Utilise le! chm2html myFile.chm. Cela convertit automatiquement le fichier .chm et place les fichiers .html dans un nouveau dossier appelé ./myFile, puis il crée un lien symbolique appelé ./myFile_index.htmlqui pointe vers ./myFile/index.html.

chm2html.py fichier:

#!/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.")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.