乐于分享
好东西不私藏

按文件夹批量合并图片为PDF文件

按文件夹批量合并图片为PDF文件

最近突然有个小众的需求,批量把大量文件夹中的图片按照为文件夹合并为PDF文件,1个文件夹对应1个PDF文件。

懒癌晚期的崽是不可能一个一个搞的,需要偷懒的方式。

所以又得靠Python了。

01

  安装Python

     下载Python

  1. 访问 https://www.python.org/downloads/

  2. 点击黄色的"Download Python"按钮

  3. 下载完成后运行安装程序

  4. 安装注意事项

  • ✅ 重要:在安装时勾选 "Add Python to PATH"

  • 点击 "Install Now" 进行安装,安装完成后,关闭窗口

02

  安装必要的库

方法A:使用命令提示符(推荐)

按 Win + R 键,输入 cmd,按回车

在黑色窗口中依次输入以下命令,每输入一行按一次回车:

pip install Pillow

方法B:如果方法A失败,尝试以下命令

python -m pip install Pillow

或或者使用阿里云源

py -m pip install Pillow -i https://mirrors.aliyun.com/pypi/simple/

03

  准备文件、文件夹

在D盘桌面新建一个文件夹,命名为【图片汇总】,将所有要处理的文件夹复制到这个文件夹中。

亦可在“  target_folder = r"D:\图片汇总"  # ⚠️ 重要:改成你的实际路径!”处修改对应需处理文件夹的地址。

新建一个文本文件,重命名为【批处理-批量转换文件夹内图片为PDF.py】(注意扩展名要改为.py)

04

  创建Python脚本

用记事本打开 批处理-批量转换文件夹内图片为PDF.py,复制粘贴以下代码:

或者直接点击阅读原文,获取可直接使用的文件【该方式对应路径为"D:\图片汇总"】

import os

import subprocess

import sys

def install_pillow():

    """自动安装Pillow库"""

    try:

        from PIL import Image

        print("Pillow已安装")

        return True

    except ImportError:

        print("正在安装Pillow...")

        try:

            subprocess.check_call([sys.executable, "-m", "pip", "install", "Pillow", "-i", "https://pypi.tuna.tsinghua.edu.cn/simple"])

            print("Pillow安装成功!")

            return True

        except Exception as e:

            print(f"安装失败: {e}")

            print("请手动运行: py -m pip install Pillow -i https://pypi.tuna.tsinghua.edu.cn/simple")

            return False

# 自动检查并安装依赖

if not install_pillow():

    sys.exit(1)

from PIL import Image

def images_to_pdf(folder_path, output_pdf_path):

    """将文件夹中的所有图片转换为一个PDF文件"""

    image_extensions = ('.jpg', '.jpeg', '.png', '.bmp', '.gif', '.tiff')

    images = []

    for file in sorted(os.listdir(folder_path)):

        if file.lower().endswith(image_extensions):

            img_path = os.path.join(folder_path, file)

            try:

                img = Image.open(img_path)

                if img.mode in ('RGBA', 'LA', 'P'):

                    img = img.convert('RGB')

                images.append(img)

                print(f"  已添加: {file}")

            except Exception as e:

                print(f"  跳过 {file}: {e}")

    if images:

        first_img = images[0]

        rest_imgs = images[1:]

        first_img.save(output_pdf_path, save_all=True, append_images=rest_imgs)

        print(f"  ✓ 已创建: {output_pdf_path} (共{len(images)}张图片)")

        return True

    else:

        print(f"  ✗ 未找到图片: {folder_path}")

        return False

def batch_convert_images_to_pdf(root_folder):

    """批量处理:每个子文件夹转换为一个PDF"""

    root_folder = os.path.abspath(root_folder)

    if not os.path.exists(root_folder):

        print(f"错误:文件夹不存在 - {root_folder}")

        return

    subfolders = [f.path for f in os.scandir(root_folder) if f.is_dir()]

    if not subfolders:

        print("未找到任何子文件夹")

        return

    print(f"找到 {len(subfolders)} 个文件夹")

    print("-" * 50)

    success_count = 0

    for folder in subfolders:

        folder_name = os.path.basename(folder)

        print(f"\n处理: {folder_name}")

        pdf_path = os.path.join(folder, f"{folder_name}.pdf")

        if images_to_pdf(folder, pdf_path):

            success_count += 1

    print(f"\n完成!成功创建 {success_count}/{len(subfolders)} 个PDF文件")

if __name__ == "__main__":

    # 修改这里为你需要处理的文件夹路径

    target_folder = r"D:\图片汇总"  # ⚠️ 重要:改成你的实际路径!

    batch_convert_images_to_pdf(target_folder)

已关注
关注
重播 分享

END

向中注协大佬低头

获取更多精彩资讯

扫码关注我们