首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在处理chm文件

正在处理chm文件
EN

Stack Overflow用户
提问于 2011-12-27 22:21:29
回答 2查看 3K关注 0票数 0

有没有一个Python库可以用来用chm extension处理文件,它具有与HTML解析器或BeautifulSoup类似的功能?

EN

回答 2

Stack Overflow用户

发布于 2011-12-27 22:29:17

PyCHM:

http://gnochm.sourceforge.net/pychm.html

票数 1
EN

Stack Overflow用户

发布于 2013-04-24 21:55:39

我一直在努力使用PyCHM来创建从.chm文件中提取封面图片的简单缩略图。这是为将来发现这个问题的所有人提供的代码:

代码语言:javascript
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import chm.chm as chm
from bs4 import BeautifulSoup
from PIL import Image
import urlparse
try:
    from cStringIO import StringIO
except:
    from StringIO import StringIO

class CHMFile:
    def __init__(self, file_name):
        self.chmfile = chm.CHMFile()
        self.chmfile.LoadCHM(file_name)

    def create_thumb(self, out_file):       
        image = None
        area = 0 # cover will propably be the biggest image from home page

        iui = self.chmfile.ResolveObject(self.chmfile.home) 
        home = self.chmfile.RetrieveObject(iui[1])[1] # get home page (as html)
        tree = BeautifulSoup(home)
        for img in tree.find_all('img'):
            src_attr =  urlparse.urljoin(self.chmfile.home, img.get('src'))
            chm_image = self.chmfile.ResolveObject(src_attr)
            png_data = self.chmfile.RetrieveObject(chm_image[1])[1] # get image (as raw data)

            png_img = Image.open(StringIO(png_data))
            new_width, new_height = png_img.size
            new_area = new_width * new_height 
            if(new_area > area and new_width > 50 and new_height > 50): # to ensure image is at least 50x50
                area = new_area
                image = png_img
        if image:
            image.save(out_file, format="PNG")


if __name__ == '__main__':
    import sys
    if len(sys.argv) != 3:
        print 'Create thumbnail image from an chm file'
        print 'Usage: %s INFILE OUTFILE' % sys.argv[0]
    else:
        chm = CHMFile(sys.argv[1])
        chm.create_thumb(sys.argv[2])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8645650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档