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

python将pdf文件转为图片,如果pdf文件包含多页,将转化的多个图片通过垂直或者水平合并成一张图片

要将PDF文件转换为图片,并将多页PDF垂直合并成一张图片,可以使用PyMuPDF(也称为fitz)库来读取PDF文件,并使用Pillow库来处理和合并图片。以下是一个示例代码,展示了如何实现这个功能:

首先,确保已经安装了所需的库。可以使用以下命令来安装它们:

pip install PyMuPDF Pillow

然后,可以使用以下Python代码来实现PDF到图片的转换以及图片的垂直或者水平合并:

import fitz  # PyMuPDF
from PIL import Image


def pdf_to_img_list(pdf_path):
    # 打开PDF文件
    pdf_document = fitz.open(pdf_path)
    images_list = []

    # 遍历PDF的每一页
    for page_num in range(len(pdf_document)):
        page = pdf_document.load_page(page_num)  # 加载页面
        pix = page.get_pixmap(matrix=fitz.Matrix(2, 2), alpha=False)   # 将页面转换为图片
        img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
        images_list.append(img)

    return images_list

"""垂直合并"""
def merge_images_vertically(images, output_path):
    # 获取每张图片的宽度和高度
    widths, heights = zip(*(i.size for i in images))

    # 计算合并后的图片宽度(取最宽的图片宽度)和总高度
    total_width = max(widths)
    total_height = sum(heights)

    # 创建一个新的空白图片,用于存放合并后的图片
    new_image = Image.new('RGB', (total_width, total_height))

    # 将每张图片按顺序粘贴到新的图片上
    y_offset = 0
    for img in images:
        new_image.paste(img, (0, y_offset))
        y_offset += img.height

    # 保存合并后的图片
    new_image.save(output_path)


"""水平合并"""
def merge_images_horizontally(images,output_path):
    # 计算合并后的图像宽度和高度
    widths, heights = zip(*(i.size for i in images))
    total_width = sum(widths)
    max_height = max(heights)

    # 创建一个新的空白图像,用于存放合并后的图像
    new_image = Image.new('RGB', (total_width, max_height))

    x_offset = 0
    for img in images:
        new_image.paste(img, (x_offset, 0))
        x_offset += img.width

    new_image.save(output_path)

"""调用方法,进行合并"""
def pdf_to_image(pdf_path, output_path):
    # pdf转图片
    images = pdf_to_img_list(pdf_path)
    # 垂直合并
    merge_images_vertically(images, output_path)
    # 水平合并
    merge_images_horizontally(images, output_path)


# 使用示例
pdf_file = 'example.pdf'  # 替换为你的PDF文件路径
output_image = 'output_image.jpg'  # 替换为你想要保存的图片路径

pdf_to_image(pdf_file, output_image)

相关文章:

  • 状态模式_行为型_GOF23
  • UE5学习笔记 FPS游戏制作27 显示玩家血量
  • python3的多进程和多线程设计实现
  • 力扣刷题-热题100题-第28题(c++、python)
  • RabbitMQ快速上手
  • 22--交换安全与端口隔离完全指南:MAC地址的奇幻漂流
  • 查看pip3 是否安装了Flask
  • MySQL8.0.37组复制MGR配置详解
  • 零基础被迫参加CTF比赛?CTF高频解题技巧与经验分享
  • 深入了解 MySQL 锁机制
  • 饮料购物商城基于Spring Boot SSM
  • java 面试题记录
  • C++ 变量的声明与定义分离式编译与静态类型(十六)
  • 基于 SpringBoot 的火车订票管理系统
  • 万字长文详解Text-to-SQL
  • 从 0 到跑通的 Qt + OpenGL + VS 项目的完整流程
  • 算法刷题记录——LeetCode篇(1.5) [第41~50题](持续更新)
  • Neo4j【环境部署 03】插件APOC和ALGO配置使用实例分享(网盘分享3.5.5兼容版本插件)
  • 【Windows】win10系统安装.NET Framework 3.5(包括.NET 2.0和3.0)失败 错误代码:0×80240438
  • 【最新】探索CFD的未来:从OpenFOAM到深度学习,全面解析计算流体力学的顶级资源与前沿技术
  • 建设学分银行网站策划书/外贸接单十大网站
  • 做拍拍拍拍网站/seo日常工作内容
  • 无为县做互联网网站/百度推广销售
  • iapp网站做软件教程/企业培训师资格证报考2022
  • 房山网站开发/百度做广告多少钱一天
  • 学校网站建设工作/厦门百度整站优化服务