遇事不决,可问春风,春风不语,谨遵本心|

布都御魂

园龄:3年9个月粉丝:2关注:1

文件夹里的图片转换成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 中国大陆许可协议进行许可。

posted @   布都御魂  阅读(1)  评论(0编辑  收藏  举报
   
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起