码迷,mamicode.com
首页 > 其他好文 > 详细

PDF转图片工具

时间:2019-02-01 17:10:42      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:python   tpi   输出   转换   点击下载   ESS   文档   png   RoCE   

点击下载( 提取码:1ll1 

 

软件功能基于mupdf,UI使用wxpython开发

功能:

支持pdf转图片,图片格式png

支持批量转换

使用:

第一步,点击按钮添加文档到列表,或直接将待转换文档拖入列表

第二步,选择输出目录

第三部,点击转换

 

核心代码:

class Debug(object):
    DEBUG = True

    def TraceLog(self, log=None):
        if Debug:
            import traceback
            traceback.print_exc()
            if log:
                print(log)


class PDF2IMGProcess(Debug):
    def __init__(self, path, callback=None):
        try:
            self.pdf_doc = fitz.open(path)
            self.file_name = os.path.basename(path)
            self.pages = self.pdf_doc.pageCount
            self.callback = callback
            self._Running = True
        except:
            self.TraceLog()

    def _TransFile(self, output_path):
        if self.callback:
            self.callback({‘file‘: self.file_name, ‘status‘: ‘开始!‘})
        if self.pages > 0:
            output_path = os.path.join(output_path, self.file_name)
            os.makedirs(output_path, exist_ok=True)
        for p in range(self.pages):
            if not self._Running:
                break
            if self._TransPage(output_path, p):
                if self.callback:
                    self.callback({‘file‘: self.file_name, ‘page‘: p, ‘status‘: ‘Done!‘})
            else:
                if self.callback:
                    self.callback({‘file‘: self.file_name, ‘page‘: p, ‘status‘: ‘Error!‘})
                    break
        if self.callback:
            self.callback({‘file‘: self.file_name, ‘status‘: ‘完成!‘})

    def _TransPage(self, output_path, page_no, scale=1.8):
        output_name = os.path.join(output_path, ‘{}_{}.png‘.format(self.file_name, page_no))
        page = self.pdf_doc.loadPage(page_no)
        matrix = fitz.Matrix(scale, scale)
        try:
            pix = page.getPixmap(matrix=matrix)
            pix.writePNG(output_name)
            return True
        except:
            self.TraceLog()
            return False

    def Start(self, output_path):
        self._Running = True
        Thread(target=self._TransFile, args=(output_path,)).start()

    def Cancel(self):
        self._Running = False

  

 

 

 

 

PDF转图片工具

标签:python   tpi   输出   转换   点击下载   ESS   文档   png   RoCE   

原文地址:https://www.cnblogs.com/applex007/p/10346219.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!