文件夹里的图片转换成pdf
import os
from PIL import Image
import re
def extract_number(filename, file_name):
"""从文件名中提取数字部分,排除文件名中的特定值(如文件名中的项目名称)"""
# 移除文件名中的项目名称部分
base_name = os.path.basename(filename).replace(file_name, '')
# 使用正则表达式匹配文件名中的数字
match = re.search(r'\d+', base_name)
# 如果找到数字,返回数字;否则返回一个很大的数,确保这些文件在最后
return int(match.group()) if match else float('inf')
def images_to_pdf(file_name, folder_path, output_pdf_path):
# 获取文件夹中所有图片文件的路径
images = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif'))]
# 分离封面、目录页和其他图片
cover = [img for img in images if '封面' in os.path.basename(img)]
directory = [img for img in images if '目录' in os.path.basename(img)]
other = [img for img in images if img not in cover and img not in directory]
# 按文件名中的数字排序
directory.sort(key=lambda x: extract_number(x, file_name))
other.sort(key=lambda x: extract_number(x, file_name))
# 合并所有图片列表
images = cover + directory + other
# 创建一个列表,用于存储处理后的图像对象
img_list = []
# 遍历所有图片,打开并调整大小(如果需要)
for i, img_path in enumerate(images):
img = Image.open(img_path)
img_list.append(img)
# 将图像列表写入 PDF 文件
if img_list: # 确保列表不为空
img_list[0].save(output_pdf_path, "PDF", resolution=100.0, save_all=True, append_images=img_list[1:])
# 文件夹名称
file_name = '2024北京房地产市场发展报告'
# 指定输入文件夹和输出 PDF 文件路径
folder_path = f'D:/{file_name}' # 图片文件夹路径
output_pdf_path = f'{file_name}.pdf' # 输出 PDF 文件路径
# 调用函数
images_to_pdf(file_name, folder_path, output_pdf_path)
本文作者:布都御魂
本文链接:https://www.cnblogs.com/wolvies/p/18711047
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步