Wie öffne und konvertiere ich CHM-Dokumente?


9

Ich habe einige Dokumente, die in einem .chmFormat vorliegen. Ich habe mich gefragt, ob es in Ubuntu ein Dateiformat gibt, das einfacher zu navigieren, unterstützt und von gleicher Dateigröße ist.

Wenn ja, würde ich gerne anfangen, all diese Bücher zu konvertieren und sie wahrscheinlich mit weniger Aufwand auf allen meinen Ubuntu-PCs und meinem Android-Handy zu verwenden.


Antworten:


13

Sie können sie mit dem Befehlszeilenprogramm chm2pdf in PDF konvertieren ( installieren Sie chm2pdf hier ). Nach der Installation können Sie den Befehl von einem Terminal wie folgt ausführen:

chm2pdf --book in.chm out.pdf

Falls Sie es nicht wussten, stehen mehrere chm-Reader zur Verfügung - suchen Sie einfach chmim Software Center.

Sie können chm-Dateien auch mit dem Befehlszeilentool 7-Zip in HTML extrahieren ( installieren Sie p7zip-full hier ):

7z x file.chm

Die PDF-Konvertierung ist keine Lösung, nach der ich suche. Vielen Dank für Ihre schnelle Antwort. Weitere Ideen?
Julio

3

Wenn Sie kein PDF verwenden möchten, würde ich Epub vorschlagen, ein ziemlich gutes, offenes E-Book-Format. Sie können einen guten Reader namens Calibre unter Ubuntu installieren. Calibre verfügt über eine nützliche Konvertierungsfunktion, mit der chm-Dateien importiert werden können Konvertieren Sie sie in andere Epub-Formate. Epubs können auch auf den meisten Smartphones und Tablets problemlos gelesen werden.

Calibre kann über das Software Center installiert werden.


2

Es gibt auch KChmViewer, wenn Sie KDE bevorzugen.


KChmViewer ist in Ordnung. aber ich würde das Firefox-Addon [CHM Reader] bevorzugen. Keine gute Lösung für mein Problem, da ich diese miesen chm-Dateien loswerden möchte, die ich bereits in einem besser unterstützten Format habe. Pdf ist auch nicht gut. Optionen?
Julio



0

dv3500ea hat eine großartige chm2pdf-Antwort , aber ich bevorzuge es, sie als HTML-Dateien zu lesen.

Zusamenfassend:

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

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

Öffnen Sie dann ./outdir/index.html, um die konvertierten HTML-Dateien anzuzeigen! Yaaay! Viel besser. Jetzt kann ich wie eine .chm-Datei darin navigieren, aber ich kann auch meinen Chrome-Browser verwenden, um die Seiten nach Text zu durchsuchen, einfach zu drucken usw.

Lassen Sie uns einen Befehl namens aufrufen chm2html

Hier ist ein schönes Skript, das ich geschrieben habe.

  1. Kopieren Sie das folgende Skript und fügen Sie es in eine Datei ein chm2html.py
  2. Machen Sie es ausführbar: chmod +x chm2html.py
  3. Erstellen Sie ein ~/binVerzeichnis, falls Sie noch keines haben:mkdir ~/bin
  4. Erstellen Sie einen Symlink zu chm2html.py in Ihrem ~/binVerzeichnis:ln -s ~/path/to/chm2html.py ~/bin/chm2html
  5. Melden Sie sich von Ubuntu ab und dann wieder an oder laden Sie Ihre Pfade mit neu source ~/.bashrc
  6. Benutze es! chm2html myFile.chm. Diese automatisch konvertiert die CHM - Datei und legt die .html - Dateien in einen neuen Ordner mit dem Namen ./myFile, dann erzeugt es eine Symlink genannt , ./myFile_index.htmlwelche Punkte zu ./myFile/index.html.

chm2html.py Datei:

#!/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.")
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.