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(六)

相关推荐
胡耀超2 分钟前
从逻辑学视角理解统计学在数据挖掘中的作用
人工智能·python·数据挖掘·统计学·逻辑学
White_Can2 分钟前
《C++探幽:模板从初阶到进阶》
开发语言·c++
不会飞的鲨鱼7 分钟前
Windows系统下【Celery任务队列】python使用celery 详解(二)
开发语言·windows·python
南玖yy14 分钟前
内存安全暗战:从 CVE-2025-21298 看 C 语言防御体系的范式革命
c语言·开发语言·人工智能·struts·安全·架构·交互
编程点滴路19 分钟前
LinkedList源码解析
java·开发语言
喂我花生(๑•̀ㅂ•́)و✧1 小时前
JAVA中ArrayList的解析
java·开发语言·算法
forestsea1 小时前
Java 基础面试题
java·开发语言
草莓啵啵~1 小时前
STL-list
开发语言·c++
ayiya_Oese1 小时前
[数据处理] 6. 数据可视化
人工智能·pytorch·python·深度学习·机器学习·信息可视化
没有梦想的咸鱼185-1037-16631 小时前
【大语言模型ChatGPT4/4o 】“AI大模型+”多技术融合:赋能自然科学暨ChatGPT在地学、GIS、气象、农业、生态与环境领域中的应用
人工智能·python·机器学习·arcgis·语言模型·chatgpt·数据分析