[python]将多张图片合并为单个pdf文件

简介: [python]将多张图片合并为单个pdf文件

前言

最近有个个人需求是要把多个图片文件合并为一个PDF文件,这样方便用PDF阅读器连续看,避免界面点一下,只会图片放大。(比如看漫画

主要思路是先把单张图片转换成单个PDF文件,然后把PDF文件进行合并。原先是用WPS的转换工具做的,但WPS每次只能批量转换30张,如果有大量图片文件,用WPS就不太方便了。

现成的工具找不到,索性自己整一个。python的pillow库和pypdf2库就可以实现这样的需求。

安装依赖库

本地的python版本为3.11。注意pypdf2升级到3.0版本后,一些类和方法和版本2有些区别。

python -m pip install PyPDF2==3.0.1 pillow==10.2.0

示例代码

目录结构示例

├── images
│   ├── 00001.jpg
│   ├── 00002.jpg
│   ├── 00003.jpg
│   ├── 00004.jpg
│   ├── 00005.jpg
│   ├── 00006.jpg
│   ├── 00007.jpg
│   ├── 00008.jpg
│   ├── 00009.jpg
│   └── 00010.jpg
├── main.py
└── temp

其中main.py内容如下

from PIL import Image
import os
import re
from PyPDF2 import PdfMerger
images_dir = "images"
tmpdir = "temp"
def trans_jpg2pdf(jpg_list: list) -> list:
    """jpg图片转换成pdf
    Args:
        jpg_list (list): 图片文件列表
    Returns:
        list: 图片转换后的pdf文件列表
    """
    pdf_list = []
    for jpg in jpg_list:
        jpg_path = os.path.join(images_dir, jpg)
        pdf_file = jpg.replace('.jpg', '.pdf')
        pdf_path = os.path.join(tmpdir, pdf_file)
        if os.path.exists(pdf_path):
            os.remove(pdf_path)
        pdf_list.append(pdf_path)
        im = Image.open(jpg_path)
        im.save(pdf_path, 'PDF', resolution=100.0)
    return pdf_list
def merge_pdf(pdf_list: list, result_pdf: str = "result.pdf"):
    """ 合并pdf文件
    Args:
        pdf_list (list): pdf文件列表
        result_pdf (str): 合并后的pdf文件名称
    """
    sorted_list = sorted(pdf_list, key=lambda x: int(re.search(r'\d+', x).group()))
    f_merger = PdfMerger()
    for pdf in sorted_list:
        f_merger.append(pdf)
    if os.path.exists(result_pdf):
        os.remove(result_pdf)
    f_merger.write(result_pdf)
if __name__ == '__main__':
    jpg_list = [f for f in os.listdir(images_dir) if f.endswith(".jpg")]
    pdf_list = trans_jpg2pdf(jpg_list)
    merge_pdf(pdf_list, "result.pdf")

补充

  • webp格式文件转PDF示例
from PIL import Image  
  
im = Image.open("00033.webp")  
rgb_im = im.convert("RGB")  
rgb_im.save("00033.pdf", 'PDF', resolution=100.0)
相关文章
|
2月前
|
C#
【PDF提取内容改名】批量提取PDF指定区域内容重命名PDF文件,PDF自动提取内容命名的方案和详细步骤
本工具可批量提取PDF中的合同编号、日期、发票号等关键信息,支持PDF自定义区域提取并自动重命名文件,适用于合同管理、发票处理、文档归档和数据录入场景。基于iTextSharp库实现,提供完整代码示例与百度、腾讯网盘下载链接,助力高效处理PDF文档。
298 40
|
2月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
2月前
|
编译器 Python
如何利用Python批量重命名文件
本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
|
3月前
|
编解码 Prometheus Java
当Python同时操作1000个文件时,为什么你的CPU只用了10%?
本文介绍如何构建一个高效的文件处理系统,解决单线程效率低、多线程易崩溃的矛盾。通过异步队列与多线程池结合,实现任务调度优化,提升I/O密集型操作的性能。
63 4
|
2月前
|
数据采集 监控 算法
Python文件与目录比较全攻略:从基础操作到性能优化
文件比较的核心在于数据指纹校验,通过逐字节比对生成唯一标识,确保内容一致性。从标准库的os与filecmp到高性能第三方库如pydiffx,再到分布式与量子加密技术的未来趋势,文件比较广泛应用于数据备份、代码审查与系统监控等领域,是保障数据完整性的关键技术手段。
67 0
|
2月前
|
前端开发 安全 Java
办公自动化必修课:用Python打造PDF全能处理工具
在职场中,PDF处理常令人崩溃:拆分、合并、加密等问题严重影响效率。本文教你用Python打造一个包含拆分、合并、加密、水印四大功能的PDF工具箱,通过实战代码提升办公自动化水平,让文档操作像拼乐高一样简单高效。
107 0
|
3月前
|
数据采集 存储 API
Python爬虫结合API接口批量获取PDF文件
Python爬虫结合API接口批量获取PDF文件
|
8月前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
185 8
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
166 1
|
存储 Python 内存技术
python WAV音频文件处理—— (1)读写WAV文件
python WAV音频文件处理—— (1)读写WAV文件
302 14

热门文章

最新文章

推荐镜像

更多