Python使用Pillow将多张图片合成为PDF

叶初
叶初
发布时间:2026-10-16 | 4人浏览过
原创

本文介绍如何使用Python的Pillow库将多张图片安全地合成为PDF文件。通过本地脚本处理,避免了上传至第三方网站的安全风险。文章提供了从单图转换到多图合成的完整代码示例,详细讲解了save_all和append_images参数的用法,适用于Windows和macOS系统,确保数据隐私与操作便捷。

在日常办公或生活中,经常遇到需要提交身份证正反面等证明材料的情况。许多在线平台或办事系统仅支持PDF格式的文件上传,这就需要将多张分散的图片合并为一个标准的PDF文档。

在macOS系统中,预览应用提供了便捷的功能:只需在预览窗口中同时打开所需图片,选择“导出为PDF”即可快速生成文件。然而,Windows系统缺乏此类内置的直观工具。虽然网络上存在大量在线PDF合成网站,但它们要求用户先上传图片至服务器,这种数据外传的方式存在隐私泄露风险,因此并不推荐用于敏感证件的处理。

为了保障数据绝对安全,最可靠的方式是利用本地脚本自行实现合成功能。

1.准备

在开始操作前,请确认您的计算机已正确安装Python环境及pip包管理工具。

您可以选择以下任意一种方式,在终端或命令行中输入命令以安装必要的依赖库:

1. Windows 系统:打开命令提示符(Cmd),可通过“开始”菜单搜索“CMD”或按“Win+R”输入“cmd”启动。

2. MacOS 系统:打开终端(Terminal),可通过“Command+空格”呼出聚焦搜索,输入“Terminal”启动。

3. 如果您使用 VSCode 或 PyCharm 等集成开发环境,可直接点击界面底部的 Terminal 标签页执行命令。

pip install pillow

2.合成原理

Pillow模块(即PIL,Python Imaging Library)是目前Python生态中事实上的图像处理标准库。尽管其功能强大,但API设计简洁易用,使得图像操作和格式转换变得非常简单。

首先,通过一个简单的示例演示如何将单张图片转换为PDF格式:

from PIL import Image
import os


def convert_img_pdf(filepath, output_path):
    """
    转换图片为pdf格式

    Args:
        filepath (str): 文件路径
        output_path (str): 输出路径
    """
    output = Image.open(filepath)
    output.save(output_path, "pdf", save_all=True)
    
    
if __name__ == "__main__":
    convert_img_pdf("1.jpeg", "./test.pdf")

您可以使用任意一张图片进行测试:

运行上述代码后,程序将在指定路径生成对应的PDF文件:

仅需几行代码即可完成转换,这种方式完全在本地运行,比依赖云端上传合成的网站更加安全可控。

3.多张照片合成PDF

掌握了单图转换的基础后,理解多图合成PDF的代码逻辑就非常容易了。

关键在于调用save方法时传入特殊参数 append_images:

output.save(pdfFilePath, "pdf", save_all=True, append_images=sources)

通过将多张图片对象存入一个列表(如“sources”数组),即可轻松将它们合并为一个PDF文档。

from PIL import Image
import os

def combine_imgs_pdf(folder_path, pdf_file_path):
    """
    合成文件夹下的所有图片为pdf

    Args:
        folder_path (str): 源文件夹
        pdf_file_path (str): 输出路径
    """
    files = os.listdir(folder_path)
    png_files = []
    sources = []
    for file in files:
        if 'png' in file or 'jpg' in file:
            png_files.append(folder_path + file)
    png_files.sort()

    output = Image.open(png_files[0])
    png_files.pop(0)
    for file in png_files:
        png_file = Image.open(file)
        if png_file.mode == "RGB":
            png_file = png_file.convert("RGB")
        sources.append(png_file)
    output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)

if __name__ == "__main__":
    folder = r"G:\证件\\"
    pdfFile = r"G:\证件\身份证.pdf"
    combine_imgs_pdf(folder, pdfFile)

只需将您的证件照片放入指定文件夹,运行该Python脚本,程序会自动读取所有图片并合成至您指定的输出路径。整个过程简单且高效。

以上就是利用Python实现多张图片合成PDF的完整教程。更多关于Python图像处理的内容,欢迎查阅本站其他文章或继续关注后续更新,感谢您的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表