轻松Python批量将图片合并为PDF并按数字顺序排序(成功)

在处理数字化文档或报告时,我们经常需要将扫描的图片或图表批量合并为单一的PDF文件。Python提供了一种简便的方法来自动化这个过程,并且可以确保图片按照数字顺序(如1, 2, 10而不是1, 10, 2)正确排序。本文将介绍如何使用Python和Pillow库来实现这一功能。

安装Pillow库

Pillow是Python Imaging Library (PIL) 的一个分支,提供了广泛的文件格式支持、有效的内部表示和强大的图像处理能力。首先确保已安装Pillow库:

pip install Pillow
 

解析

  • extract_number函数使用正则表达式re.findall从文件名中提取数字,然后基于这些数字对文件名进行排序。这确保了像page_10.png这样的文件会被正确地排序在page_2.png之后。
  • 使用Image.open(img_path).convert("RGB")加载图片并确保图片是RGB模式,因为PDF不支持Alpha通道。
  • images[0].save(output_pdf_path, save_all=True, append_images=images[1:])将第一张图片作为PDF的第一页,并将剩余图片作为后续页附加到PDF中。

from PIL import Image
import os
import re

# 指定包含图片的文件夹路径
images_folder_path = r'你的图片文件夹路径'

# 指定输出PDF文件的路径
output_pdf_path = r'你的PDF输出路径'

# 使用正则表达式提取文件名中的数字,并按这些数字进行排序
def extract_number(file_name):
    numbers = re.findall(r'\d+', file_name)  # 提取数字
    return int(numbers[0]) if numbers else 0  # 转换为整数

# 列出文件夹中的所有图片文件,并按数字排序
image_files = [f for f in os.listdir(images_folder_path) if f.endswith(('jpg', 'jpeg', 'png'))]
image_files.sort(key=extract_number)

# 初始化图片列表
images = []

# 加载图片并转换为RGB
for image_file in image_files:
    img_path = os.path.join(images_folder_path, image_file)
    img = Image.open(img_path).convert("RGB")
    images.append(img)

# 合并图片为PDF
if images:
    images[0].save(output_pdf_path, save_all=True, append_images=images[1:])

print(f'图片合并为PDF完成:{output_pdf_path}')

结论

使用Python和Pillow库批量将图片合并为PDF文件不仅简化了文档处理流程,而且通过正确的排序方法,可以确保文档的页码顺序与原始文件相符。这对于自动化报告生成、数字档案创建等场景特别有用。

希望这篇文章能帮助你更高效地处理你的文档和图像!


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

题海无涯10

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值