首页/新闻资讯/正文详情

如何将chm转换为html

发布时间:2026/11/15 0:51:35 来源:云帆数科 栏目:资讯中心
如何将chm转换为html
hh-decompile 输出目录 chm文件将chm分解成多个需要hhc.exe 文件出品公司: Microsoft Corporation 文件所属产品: HTML HelpimportosimportsubprocessfrompathlibimportPath SOURCE_DIRrD:\xxx\常用文档\10outWORK_DIRrD:\xxxx\常用文档\splitHHC_EXEr‪D:\hhc.exedeffind_html_files(root):递归查找所有 .html / .htm 文件files[]fordirpath,_,filenamesinos.walk(root):fornameinfilenames:ifname.lower().endswith((.html,.htm)):fullos.path.join(dirpath,name)relos.path.relpath(full,root)files.append(rel.replace(os.sep,/))returnsorted(files)defwrite_hhp(part_dir,chm_name,default_topic,files,hhc_name,hhk_name):hhp_pathPath(part_dir)/project.hhplines[[OPTIONS],Compatibility1.1 or later,fCompiled file{chm_name},fContents file{hhc_name},fIndex file{hhk_name},fDefault topic{default_topic},Display compile progressYes,Full-text searchYes,Language0x804,,[FILES],]lines.extend(files)hhp_path.write_text(\n.join(lines)\n,encodingutf-8)returnhhp_pathdefwrite_hhc_hhk(part_dir,name,files):同时生成 .hhc目录和 .hhk索引pathPath(part_dir)/name lines[!DOCTYPE HTML PUBLIC -//IETF//DTD HTML//EN,HTMLHEAD/HEADBODYUL,]forfinfiles:titlePath(f).stem lines.append(fLIOBJECT typetext/sitemapfparam nameName value{title}fparam nameLocal value{f}f/OBJECT)lines.append(/UL/BODY/HTML)path.write_text(\n.join(lines)\n,encodingutf-8)defcompile_chm(hhp_path,hhc_exe):hhc_exerD:\hhc\hhc.exeifnotos.path.isfile(hhc_exe):raiseFileNotFoundError(f找不到 hhc.exe:{hhc_exe})print(f正在编译:{hhp_path})resultsubprocess.run([hhc_exe,str(hhp_path)],stdoutsubprocess.PIPE,stderrsubprocess.PIPE,)outresult.stdout.decode(gbk,errorsignore)errresult.stderr.decode(gbk,errorsignore)print(stdout:,out)print(stderr:,err)print(returncode:,result.returncode)ifresult.returncode!0:raiseRuntimeError(f编译失败:{hhp_path})defsplit_chm(source_dir,work_dir,hhc_exe):work_dirPath(work_dir)source_dirPath(source_dir)ifnotsource_dir.is_dir():raiseFileNotFoundError(f解包目录不存在:{source_dir})print(1. 扫描 HTML 文件)html_filesfind_html_files(source_dir)iflen(html_files)2:raiseValueError(HTML 文件太少无法拆成两个 CHM)midlen(html_files)//2part1_fileshtml_files[:mid]part2_fileshtml_files[mid:]# 复制文件到两个子目录forpart_name,filesin[(part1,part1_files),(part2,part2_files)]:part_dirwork_dir/part_name part_dir.mkdir(parentsTrue,exist_okTrue)forfinfiles:srcsource_dir/f dstpart_dir/f dst.parent.mkdir(parentsTrue,exist_okTrue)ifsrc.exists():dst.write_bytes(src.read_bytes())# 生成 part1 工程print(2. 生成 part1 工程)p1work_dir/part1hhp1write_hhp(p1,part1.chm,part1_files[0],part1_files,part1.hhc,part1.hhk)write_hhc_hhk(p1,part1.hhc,part1_files)write_hhc_hhk(p1,part1.hhk,part1_files)# 生成 part2 工程print(3. 生成 part2 工程)p2work_dir/part2hhp2write_hhp(p2,part2.chm,part2_files[0],part2_files,part2.hhc,part2.hhk)write_hhc_hhk(p2,part2.hhc,part2_files)write_hhc_hhk(p2,part2.hhk,part2_files)# 编译print(4. 编译 part1.chm)compile_chm(hhp1,hhc_exe)print(5. 编译 part2.chm)compile_chm(hhp2,hhc_exe)print(完成输出目录,work_dir)if__name____main__:split_chm(SOURCE_DIR,WORK_DIR,HHC_EXE)

相关推荐

Accel-Sim仿真工作流全解:用run_simulations.py批量跑GPU仿真任务
Accel-Sim仿真工作流全解:用run_simulations.py批量跑GPU仿真任务

【免费下载链接】accel-sim-framework This is the top-level repository for the Accel-Sim framework. 项目地址: https://gitcode.com/gh_mirrors/ac/accel-sim-framework 点击查看 免费下载 Accel-Sim 是一个面向 GPU 体系结构研究的开源仿真框架(基… · 2026/11/15 22:40:28

Lively 动态壁纸:一张静态图怎么变成立体桌面
Lively 动态壁纸:一张静态图怎么变成立体桌面

Lively 动态壁纸:一张静态图怎么变成立体桌面 【免费下载链接】lively Free and open-source software that allows users to set animated desktop wallpapers and screensavers powered by WinUI 3. 项目地址: https://gitcode.com/gh_mirrors/li/lively L… · 2026/11/15 6:27:34

AI小说创作助手:结构化工作流与可干预式辅助设计
AI小说创作助手:结构化工作流与可干预式辅助设计

简介:这是一款面向小说创作者与AI写作爱好者的智能小说辅助工具,基于大语言模型构建,聚焦长篇故事的逻辑一致性与设定统一性难题,适用于从新手作者到专业写手的多层级创作场景。资源包共163个文件,以77个Python核心模块… · 2026/11/12 8:58:22

电工作业维修灯强磁证怎么考?学历不高也能拿全国通用证书
电工作业维修灯强磁证怎么考?学历不高也能拿全国通用证书

电工作业维修灯强磁证怎么考?学历不高也能拿全国通用证书 你是不是也担心学历不高考不了证?别急,电工作业维修灯强磁证其实并不难考,关键是选对方法。这个证全国通用,不光是找工作的敲门砖,更是你在工地干活的护身符。特别是像周口的建筑工,每天和高压… · 2026/11/15 22:47:46

诸城在哪里办电工证全流程办理指南
诸城在哪里办电工证全流程办理指南

诸城在哪里办电工证全流程办理指南 实操考试心里没底怕挂科?这可是很多准备考电工证的小伙伴的共同心声,尤其是那些想在上岗前拿到【上岗必备】的电工证,生怕一次失误就前功尽弃。别急,本文将从报名到取证,全流程给你讲明白,尤其是… · 2026/11/15 22:47:46

电工证线上报名值不值得考?外省证能转吗?商丘电工从业者必看
电工证线上报名值不值得考?外省证能转吗?商丘电工从业者必看

电工证线上报名值不值得考?外省证能转吗?商丘电工从业者必看 之前考的证在外省能不能转过来?这是很多在外地打工或者跨省工作的电工最关心的问题。尤其像商丘这样的地级市,很多人在外地工作、生活,手里拿着外省的电工证,担心回来之后能不能继续用。别急… · 2026/11/15 22:47:46

合肥代考电工证如何避坑?考前押题技巧全解析
合肥代考电工证如何避坑?考前押题技巧全解析

合肥代考电工证如何避坑?考前押题技巧全解析 不知道去哪报名怕被中介坑,合肥代考电工证报名门槛高、流程复杂,一不小心就容易被不靠谱的中介忽悠。很多人想考电工证,但不知道从哪里下手,更怕在报名过程中被坑钱、被坑证。本文从南阳卧龙区市政公用工程从… · 2026/11/15 22:47:46

东北电网电工证考试千万别踩坑,证书过期了不知道怎么复审延期
东北电网电工证考试千万别踩坑,证书过期了不知道怎么复审延期

东北电网电工证考试千万别踩坑,证书过期了不知道怎么复审延期 证书过期了不知道怎么复审延期?别急,你不是一个人。这事儿在郑州金水区的市政公用工程圈里,真不是个例。很多人拿着电工证,干着活儿,结果一不留神,证就过期了, 千万别踩坑… · 2026/11/15 22:47:46

信阳浉河区项目现场管理员:安监局技工特种工证怎么考?官方报名入口全解析
信阳浉河区项目现场管理员:安监局技工特种工证怎么考?官方报名入口全解析

信阳浉河区项目现场管理员:安监局技工特种工证怎么考?官方报名入口全解析 实操考试心里没底怕挂科?信阳浉河区的项目现场管理员们,尤其是刚接触特种作业的你,一定对【安监局技工特种工证】的考试流程、考试内容、备考策略一头雾水。别急,今天就把官方报… · 2026/11/15 22:46:46

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

长春初级电工证怎么考?通过率揭秘全在这里
长春初级电工证怎么考?通过率揭秘全在这里

长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50

国内电工证报考条件与考试时间
国内电工证报考条件与考试时间

低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50

电工作业时如何断电?电子证书到底能不能全国通用?
电工作业时如何断电?电子证书到底能不能全国通用?

电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码