Chm To Markdown

Chm To Markdown

🚀 CHM到Markdown转换器

这是一个Python工具,能将编译的HTML帮助(CHM)文件转换为Markdown格式。它可从CHM文档中提取HTML文件,并将其转换为格式良好的Markdown文件,让技术文档更易访问,且适合进行版本控制。

🚀 快速开始

配置要求

  • Python 3.7+
  • 7-Zip安装在默认位置(C:\Program Files\7-Zip\7z.exe
  • 下列Python包:
    • beautifulsoup4
    • html2text
    • aiofiles

安装

  1. 克隆或下载此仓库。
  2. 安装所需的Python包:
pip install -r requirements.txt

或直接安装:

pip install beautifulsoup4 html2text aiofiles

使用方法

  1. 编辑chm_to_markdown.pymain()函数中的配置变量:
input_folder = r"C:\Path\To\Extracted\Files"  # 临时文件夹用于提取CHM
output_folder = r"C:\Path\To\Output\Markdown"  # Markdown文件保存位置
chm_file_path = r"C:\Path\To\Your\File.chm"    # 您的CHM文件路径
  1. 运行脚本:
python chm_to_markdown.py
  1. 脚本将:
    • 清空输入和输出文件夹。
    • 将CHM文件提取到输入文件夹。
    • 将HTML文件转换为Markdown。
    • 将Markdown文件保存到输出文件夹。

✨ 主要特性

  • 使用7-Zip提取CHM文件。
  • 将HTML内容转换为干净的Markdown格式。
  • 特殊处理代码片段,带语言特定语法高亮。
  • 保留并修复表格。
  • 更新内部链接以保持文档引用。
  • 异步处理文件以提升性能。
  • 批量处理并报告进度。

🔧 技术细节

性能调优

您可以调整process_folder_async()调用中的以下参数来优化性能:

  • max_workers: CPU绑定操作的工人线程数量。
  • semaphore_limit: 最大并发文件I/O操作数。
  • batch_size: 每批处理的文件数量。
await process_folder_async(
input_folder, output_folder, max_workers=8, semaphore_limit=20, batch_size=50
)

自定义选项

该脚本提供了以下内容转换自定义选项:

删除不需要的元素

您可以编辑以下列表来自定义要删除的HTML元素:

tags_to_remove = ["iframe", "object", "script", "br", "img"]
classes_to_remove = ["collapsibleAreaRegion", "collapsibleRegionTitle", ...]
ids_to_remove = ["PageFooter"]

代码片段

该脚本处理带语言特定格式的代码片段。您可以自定义语言映射:

id_to_lang = {
"IDAB_code_Div1": "csharp",
"IDAB_code_Div2": "vb",
"IDAB_code_Div3": "cpp",
"IDAB_code_Div4": "fsharp",
}

📚 详细文档

故障排除

  • 模块缺失错误:请确保安装了所有必需的包,并且Python环境配置正确。
  • 7-Zip未找到:检查7-Zip是否安装在默认位置,或更新脚本中的路径。
  • 权限错误:以管理员权限运行终端或命令提示符。
  • 处理大型CHM文件时的内存问题:尝试增加批大小并减少max_workers以管理内存使用。

📄 许可证

该项目是开源的,并且在MIT License下可用。

  • 0 关注
  • 0 收藏,27 浏览
  • system 提出于 2025-09-19 06:45

相似服务问题

相关AI产品