Python - PDF 转 png

网上搜了下很多方法都是过期的,这里贴下我的方法

根据 pymupdf -- Pixmap.tobytes
https://pymupdf.readthedocs.io/en/latest/pixmap.html#Pixmap.tobytes


核心方法

python 复制代码
def pdf2png(pdfPath, img_dir, zoom_x=1,zoom_y=1,rotation_angle=0):
    # 打开PDF文件
    pdf = fitz.open(pdfPath)


    # 逐页读取PDF
    for idx in range(0, pdf.page_count):
        idx += 1
        page = pdf[idx] 
        trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle) 
        pm = page.get_pixmap(matrix=trans, alpha=False, dpi=200)
        

        bt = pm.tobytes()
 
        img_path = os.path.join(img_dir, f'{idx}.png')
        with open(img_path, 'wb') as f:f.write(bt)
        
    pdf.close()

整个处理文件

python 复制代码
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   pdf2img.py
@Time    :   2024-09-28 11:10:57
@Author  :   shushu
@Version :   1.0
@Desc    :   
''' 

import os
import sys  
import os  
import fitz

def pdf2png(pdfPath, img_dir, zoom_x=1,zoom_y=1,rotation_angle=0):
    # 打开PDF文件
    pdf = fitz.open(pdfPath)


    # 逐页读取PDF
    for idx in range(0, pdf.page_count):
        idx += 1
        page = pdf[idx] 
        trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle) 
        pm = page.get_pixmap(matrix=trans, alpha=False)
        

        bt = pm.tobytes()
 
        img_path = os.path.join(img_dir, f'{idx}.png')
        with open(img_path, 'wb') as f:f.write(bt)
        
    pdf.close()

def test():
    pdfPath = '/Users/xxx表格_图片_page_2.pdf' 
    img_dir = '/Users/xxx/04'
    pdf2png(pdfPath, img_dir)


def prcs(file_path):
    print('-- ', file_path) 
    img_dir = file_path.replace('.pdf', '')
    if not os.path.isdir(img_dir):os.makedirs(img_dir)  
    pdf2png(file_path, img_dir)  
    
if __name__ == '__main__':
    
    paths = sys.argv[1:]
    print('-- ', paths) 
    prcs(paths) 
    
    

伊织 2024-09-28(六)

相关推荐
weixin_493503676 小时前
Vue3 前端生成 PDF:会员证书与活动签到表的三种打印方案与踩坑记录
前端·pdf·状态模式
傻啦嘿哟6 小时前
某招聘平台爬虫:爬取招聘岗位数据,分析各城市薪资水平
开发语言·爬虫·python
2501_933670796 小时前
2026秋招量化分析岗技能栈:Python、SQL、统计建模、回测项目怎么准备
开发语言·python·sql
2601_962077606 小时前
python Dejavu库快速识别音频指纹实例探究
python·音乐识别·dejavu库·音频指纹识别·实例探究
科技苑7 小时前
如何用Python编程实现一个简单的Web爬虫?
人工智能·python
李少兄7 小时前
JavaScript 数据类型完全指南
开发语言·javascript·ecmascript
dayDayupbetter7 小时前
Visual C++ 2010安装与使用高手秘籍
python
隐擎fox7 小时前
深入理解网络传输层安全:TLS 指纹识别(JA3/JA4)原理与 Python 协议层检测实战
爬虫·python·网络协议·安全·网络安全·https
医疗信息化王工7 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
Seoyoneh8 小时前
Agentic Workflow编排架构:云客服从“被动响应”迈向“主动执行”的技术实现
java·开发语言·架构