Como abrir e converter documentos CHM?


9

Eu tenho alguns documentos que estão em um .chmformato. Gostaria de saber se existe um formato de arquivo que possa ser mais fácil de navegar, suportado e com tamanho igual no Ubuntu?

Se houver, eu gostaria de começar a converter todos esses livros e provavelmente usá-los com menos problemas em todos os meus PCs Ubuntu e meu telefone Android.


Respostas:


13

Você pode convertê-los em PDF usando o programa de linha de comando chm2pdf ( instale chm2pdf aqui ). Uma vez instalado, você pode executar o comando em um terminal como este:

chm2pdf --book in.chm out.pdf

Caso você não saiba, existem vários leitores de chm disponíveis - basta pesquisar chmno Centro de Software.

Você também pode extrair arquivos chm para html usando a ferramenta de linha de comando 7-Zip ( instale p7zip-full aqui ):

7z x file.chm

Conversão de PDF não é uma solução que estou procurando. No entanto, obrigado pela sua resposta rápida. Mais ideias?
Julio

3

Se você não quiser usar o PDF, sugiro o Epub, um formato de e-book aberto bastante bom, você pode instalar um bom leitor chamado Caliber no Ubuntu, o Caliber tem um recurso de conversão útil que pode importar arquivos chm e, em seguida, convertê-los para outros formatos epub incluído. os epubs também podem ser facilmente lidos na maioria dos smartphones e tablets.

O calibre pode ser instalado a partir do centro de software.


2

Há também o KChmViewer, se você preferir o KDE.


O KChmViewer está OK. mas eu prefiro o addon do firefox [CHM Reader]. Não é uma boa solução para o meu problema, pois quero me livrar desses arquivos chm ruins que já tenho para um formato melhor suportado. Pdf também não é bom. Opções?
Julio



0

O dv3500ea tem uma ótima resposta chm2pdf , mas eu prefiro lê-los como arquivos html.

Em resumo:

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

Em seguida, abra ./outdir/index.htmlpara visualizar os arquivos html convertidos! Yaaay! Muito melhor. Agora posso navegar como um arquivo .chm, mas também posso usar meu navegador Chrome para pesquisar nas páginas por texto, imprimir facilmente etc.

Vamos fazer um comando chamado chm2html

Aqui está um bom roteiro que escrevi.

  1. Copie e cole o script abaixo em um arquivo chm2html.py
  2. Torne executável: chmod +x chm2html.py
  3. Crie um ~/bindiretório se você ainda não tiver um:mkdir ~/bin
  4. Faça um link simbólico para chm2html.py no seu ~/bindiretório:ln -s ~/path/to/chm2html.py ~/bin/chm2html
  5. Saia do Ubuntu e faça o login novamente ou recarregue seus caminhos com source ~/.bashrc
  6. Use-o! chm2html myFile.chm. Isso converte automaticamente o arquivo .chm e coloca os arquivos .html em uma nova pasta chamada ./myFile, e cria um link simbólico chamado para o ./myFile_index.htmlqual aponta ./myFile/index.html.

chm2html.py Arquivo:

#!/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.")
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.