当前位置: 首页 > article >正文

Python - PDF 转 png

网上搜了下很多方法都是过期的,这里贴下我的方法
根据 pymupdf – Pixmap.tobytes
https://pymupdf.readthedocs.io/en/latest/pixmap.html#Pixmap.tobytes


核心方法

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


整个处理文件

#!/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(六)


http://www.kler.cn/a/328372.html

相关文章:

  • JVM垃圾回收详解(重点)
  • MySQL安装及数据库基础
  • AI模型新发现:精度的重要性超出预期
  • 25.UE5时间膨胀,慢动作,切换地图,刷BOSS
  • 【青牛科技】视频监控器应用
  • 【MYSQL】锁详解(全局锁、表级锁、行级锁)【快速理解】
  • Redis篇(缓存机制 - 分布式缓存)(持续更新迭代)
  • EtherNET IP 转 Profinet 网关:工业通信的桥梁
  • css3-----2D转换、动画
  • 等保2.0数据库测评之达梦数据库测评
  • docker镜像下载【被丰厚】
  • JavaScript 用HTML5约束验证API做表单验证
  • 企业数据安全从0到1建设方法
  • 安全中心 (SOC) 与 网络运营中心 (NOC)
  • LLM之基于llama-index部署本地embedding与GLM-4模型对rag系统进行测评
  • 深度学习应用:改变世界的前沿科技
  • .Net 6.0 Windows平台如何判断当前电脑是否联网
  • 并行编程实战——TBB框架的应用之一Supra的基础
  • Rust设计模式
  • 国内访问OpenAI API
  • 【EchoMimic整合包及教程】蚂蚁集团支付宝开源了数字人技术EchoMimic,可用于虚拟主播、视频编辑等
  • 10.2 Linux_并发_进程相关函数
  • 达梦数据库开启归档模式
  • Python操作系统的6个自动化脚本
  • 基于keras 的神经网络股价预测模型
  • 物联网将如何影响全球商业?