# -*- coding: utf-8 -*-

 import os
import os.path
import logging
import pdfkit original_chm = r'C:\Users\hushaojun\Documents\canoe\Help01\CAPLfunctions.chm'
root_dir = r'C:\Users\hushaojun\Documents\canoe\Help01\canoe\Topics'
seperator = os.sep # HH.EXE -decompile <输出路径> <目标chm文件> logging.basicConfig(level=logging.WARNING,
format='%(asctime)s %(pathname)s %(filename)s %(funcName)s [line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
filename='all_file_name.log',
filemode='w+') #深度优先算法
def recursionFunction(level, path):
for file_content in os.listdir(path): #列举显示所有文件夹下的内容
#“-”用于显示目录层次结构
full_path_name = os.path.join(path, file_content)
print('-'*(level+1) + full_path_name) if os.path.isdir(full_path_name): #如果是文件夹就递归显示
recursionFunction(level+1, full_path_name)
else: #如果是文件那就要直接显示
(shotname, extension) = os.path.splitext(file_content) logging.error('文件全名为:' + full_path_name)
print('文件名为:' + shotname)
print('文件后缀名为:' + extension) pdf_file_name = os.path.join(path, shotname + '.pdf') if (not os.path.exists(pdf_file_name)) and ((extension == '.htm') or (extension == '.html')):
try:
pdfkit.from_file(full_path_name, pdf_file_name)
except OSError:
print('just skip!')
except Exception as e:
print(type(e)) if __name__ == '__main__':
decomplile_cmd = 'HH.EXE -decompile %s %s' % (root_dir, original_chm)
os.system(decomplile_cmd)
recursionFunction(0, root_dir)

python反编译chm文件并生成pdf文件的更多相关文章

  1. linux下编译bib、tex生成pdf文件

    实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...

  2. pdf文件流生成pdf文件

    protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Code.Login Starr_mode ...

  3. Python数据生成pdf文件

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  4. python之reportlab生成PDF文件

    项目需要,需要自动生成PDF测试报告.经过对比之后,选择使用了reportlab模块. 项目背景:开发一个测试平台,供测试维护测试用例,执行测试用例,并且生成测试报告(包含PDF和excel),将生成 ...

  5. python反编译工具

    开发类在线工具:https://tool.lu/一个反编译网站:https://tool.lu/pyc/ 一看这个标题,就是搞坏事用的, 用 java 写程序多了,很习惯用反编译工具了,而且玩java ...

  6. Itext生成pdf文件

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

  7. 3.JasperReports学习笔记3-在浏览器生成PDF文件

    转自:https://i.cnblogs.com/posts?categoryid=921197 一.新建web工程,导入jasperreports所需的jar包,配置web.xml <serv ...

  8. 【Java】使用iText生成PDF文件

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  9. 转:在VS2010下编译、调试和生成mex文件

    最近帮人调了一个程序,是网上公开的代码,利用matlab与c++混合编程做三维模型关键点检测,发现他们可以用VS2010编译.调试.生成mexw32文件,因此觉得之前在Matlab上利用mex命令真是 ...

随机推荐

  1. 根据UIScrollView的contentOffset值精确控制动画

    根据UIScrollView的contentOffset值精确控制动画 效果 原理 根据方程精确计算每一个view在位移值x变化的时候的输出值,并根据这个值实现各种逻辑. 源码 https://git ...

  2. android中得到颜色,图片资源的方式

    button01.setBackgroundColor(getResources().getColor(R.color.red)); color.xml colors.xml <?xml ver ...

  3. c#录音和放音,超简单!不用DirectX

    最近在做android与C#录音并互相通信的小东西.但是卡在C#录音这儿了.找了好久,说的都是DirectX,可是我总是安装不上,这才找到了这个简单的录音方法.当然,如果你想要录得好并且处理音频,那还 ...

  4. List集合中的数据按照某一个属性进行分组

    有的时候,我们需要在java中对集合中的数据进行分组运算.例如:Bill对象有money(float)和type(String)属性,现有个集合List<Bill>,需要按照Bill的ty ...

  5. [转]PHP SOCKET编程

    FROM : http://blog.csdn.net/hguisu/article/details/7448528 1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情, ...

  6. 【转】搜狗开源内部项目管理平台Cynthia意欲何为

    FROM : http://blog.csdn.net/dj0379/article/details/38356825 目前,在项目管理与缺陷管理系统上,中国的中小开发团队基本都在使用国外产品,在理念 ...

  7. Mac下的Docker及Kubernetes(k8s)本地环境搭建与应用部署、管理界面kubernetes-dashboard

    mac安装docker: brew cask install docker 当然也可以直接去官网下载docker的pkg文件安装 mac的docker国内镜像:网易的镜像地址:http://hub-m ...

  8. noip 1998 洛谷P1013 进制位

    题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: L K V E L L K V E K K V E KL V V E KL KK E E K ...

  9. dubbo源码解析-spi(一)

    前言 虽然标题是dubbo源码解析,但是本篇并不会出现dubbo的源码,本篇和之前的dubbo源码解析-简单原理.与spring融合一样,为dubbo源码解析专题的知识预热篇. 插播面试题 你是否了解 ...

  10. 0mq 入门 (转)

    最近做后台发现很多地方需要队列,我用东西一般有两个要求:     1) 够傻够简单.    2) 有源码,能看又能改.    最后相中了0mq,下面介绍如何安装和写个简单的例子.一. linux平台: ...