首页 > 编程语言 >[python]将多张图片合并为单个pdf文件

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

时间:2024-03-02 16:23:28浏览次数:39  
标签:python 单个 list jpg result path pdf os

前言

最近有个个人需求是要把多个图片文件合并为一个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)

标签:python,单个,list,jpg,result,path,pdf,os
From: https://www.cnblogs.com/XY-Heruo/p/18048750

相关文章

  • Python学习笔记03
    函数语法:def函数名(传入参数):函数体return返回值#遍历字符串,并统计字符串的长度str1="helloword"str2="shen_mo_xie_xing"count=0foriinstr1:count+=1print(i,end='')print()print(f"字符串{str1}的长度是{count}")count=0fo......
  • 2024-03-02:用go语言,一个句子是由一些单词与它们之间的单个空格组成, 且句子的开头和结
    2024-03-02:用go语言,一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格,比方说,"HelloWorld","HELLO","helloworldhelloworld"都是句子,每个单词都只包含大写和小写英文字母,如果两个句子sentence1和sentence2,可以通过往其中一个句子插入一......
  • Centos 上python3 pip3安装报错:WARNING: pip is configured with locations that requ
    pip3安装报错:WARNING:pipisconfiguredwithlocationsthatrequireTLS/SSL,howeverthesslmoduleinPythonisnotavailable.在网上查一下原因是openssl版本不兼容导致,centos默认带的openssl版本太低,要升级openssl版本。openssl  下载地址:https://www.openssl.org/s......
  • Python日志logging模块
    Python日志logging模块logging---Python的日志记录工具—Python3.12.2文档Pythonlogging模块的基本使用、进阶使用详解_python中logging模块详解-CSDN博客logging模块架构日志级别默认的级别是“WARNING“,意味着只会追踪该级别及以上的事件。级别何时使用......
  • Centos 上安装python3
    1、yum方式安装: 查看yum的python可安装包yumsearchpython安装指定的python版本yuminstallpython3.x86_64-y安装完成:查看安装包的信息:rpm-qa|greppython3 2、编辑安装:下载地址:https://www.python.org/ftp/python/3.11.8/Python-3.11.8.tgz解压......
  • 《哈利波特》1-7册全集高清PDF
    《哈利·波特》简介《哈利·波特》这个系列的图书自1997年在英国问世以来,迄今在全世界已发行超过四亿多册,创造了出版史上的奇迹,全套共7册,分别是:《HarryPotterandthePhilosopher’sStone哈利波特与魔法石》、《HarryPotterandtheChamberofSecrets哈利波特与密室》、......
  • Python贝叶斯回归分析住房负担能力数据集|附代码数据
    原文链接:http://tecdat.cn/?p=11664最近我们被客户要求撰写关于贝叶斯回归的研究报告,包括一些图形和统计输出。我想研究如何使用pymc3在贝叶斯框架内进行线性回归。根据从数据中学到的知识进行推断 贝叶斯规则是什么? 本质上,我们必须将已经知道的知识与世界上的事实相结合。......
  • 【专题】中国智能汽车产业发展与展望报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34111随着新一轮技术革命和产业变革的推动,以及国家政策的大力扶持,电动化、智能化、网联化已经成为汽车行业发展的新趋势。在这种背景下,各大企业纷纷争夺数字化人才,以推动产品的规模化落地和商业化创新应用。阅读原文,获取专题报告合集全文,解锁文末53......
  • 【专题】2024中国ESG消费报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35253原文出处:拓端数据部落公众号消费者展现出了既有不变的坚持也有变化的需求。他们一直期望企业或品牌能够通过可持续产品与他们进行价值对话,例如产品配方的环境友好性、包装更新对生态利益的照顾以及循环再造的可能性等。这些具有可持续价值的......
  • Python安装与环境配置
    1.浏览器输入官方网站打开2.根据自己的电脑选择合适的版本,进行下载软件安装。3.选择下载好的版本,鼠标右键选择以管理员身份运行4.勾选AddPythontoPATH,点击Customizeinstallation请尽量勾选AddPython3.8toPATH,这样可以将Python命令工具所在目录添加到系统的环境变量中5.......