#!/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.")
您可以使用命令行程序chm2pdf(在此处安装 chm2pdf)将它们转换为 PDF。安装后,您可以从终端运行命令,如下所示:
如果您不知道,有几个可用的 chm 阅读器 - 只需
chm
在软件中心搜索即可。您还可以使用命令行工具7-Zip(在此处安装 p7zip-full)将 chm 文件提取为 html:
如果您不想使用 PDF,那么我建议您使用 Epub,这是一种相当不错的开放式电子书格式,您可以在 Ubuntu 上为它安装一个名为 Calibre 的好阅读器,Calibre 有一个有用的转换工具,可以导入 chm 文件,然后将它们转换为包括 epub 在内的其他格式。epub 也可以在大多数智能手机和平板电脑上轻松阅读。
Calibre 可以从软件中心安装。
如果您更喜欢 KDE,还有 KChmViewer。
Android 上也有xchm和一些chm 阅读器。
dv3500ea 有一个很棒的chm2pdf 答案,但我更喜欢将它们作为 html 文件阅读。
简而言之:
来源:http ://www.ubuntugeek.com/how-to-convert-chm-files-to-html-or-pdf-files.html
然后打开
./outdir/index.html
查看转换后的html文件!耶!好多了。现在我可以像浏览 .chm 文件一样浏览它,但我也可以使用我的 Chrome 浏览器在页面中搜索文本、轻松打印等。让我们创建一个名为
chm2html
这是我写的一个不错的脚本。
chm2html.py
chmod +x chm2html.py
~/bin
如果您还没有目录,请创建一个目录:mkdir ~/bin
~/bin
在您的目录中创建指向 chm2html.py 的符号链接:ln -s ~/path/to/chm2html.py ~/bin/chm2html
source ~/.bashrc
chm2html myFile.chm
. 这会自动转换 .chm 文件并将 .html 文件放入一个名为 的新文件夹./myFile
中,然后它会创建一个名为 的符号链接./myFile_index.html
,它指向./myFile/index.html
.chm2html.py
文件:从我的eRCaGuy_dotfiles 存储库在 GitHub 上获取此文件的最新版本:这是一个老问题,但直接的答案是使用
archmage
可以将 chm 内容托管为 localhost 上的网站。例如运行
archmage -p 5000 file.chm
并在您的网络浏览器中打开 http://localhost:5000 以打开文件中的
chm
文档。手册页作为参考:
http://manpages.ubuntu.com/manpages/trusty/man1/archmage.1.html
酒足矣。
然后:使用此软件打开它
口径会做这一切
安装口径
使用按钮将 chm 文件导入Calibre
Add books
使用
Convert books
按钮将其转换为 epub 或 pdf。