寒窗轩,寒川的个人网络博客,记录互联网事,学习网络编程、分享工作经验、人生感悟,包括但不限于程序代码、数据库、Office办公、随笔等内容。

python读取文件夹下图片并生成pdf文件

如何用python读取文件夹下的图片并生成pdf文件?这或许是一个比较常见的需求,市面上很多图片转pdf的软件,各有千秋。怎么用python实现这一功能?废话不多说,直接上代码。

from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
from PIL import Image
import os

def get_image_paths_from_folder(folder_path):
    # 定义支持的图片文件扩展名
    image_extensions = {".png", ".jpg", ".jpeg", ".bmp", ".gif", ".tiff"}
    
    # 初始化一个空列表来存储图片路径
    image_paths = []
    
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        # 获取文件的完整路径
        file_path = os.path.join(folder_path, filename)
        
        # 检查文件是否是图片文件(通过扩展名判断)
        if os.path.isfile(file_path) and os.path.splitext(file_path)[1].lower() in image_extensions:
            image_paths.append(file_path)
    return image_paths

def images_to_pdf(image_paths, output_pdf):
    # 创建一个新的PDF文件
    c = canvas.Canvas(output_pdf, pagesize=A4)
    width, height = A4  # A4纸的宽度和高度

    for image_path in image_paths:
        img = Image.open(image_path)
        img_width, img_height = img.size

        # 根据图片尺寸调整在PDF中的位置
        if img_width > img_height:
            # 如果是横图,旋转90度
            img = img.rotate(90, expand=True)
            img_width, img_height = img.size

        # 计算图片在PDF中的缩放比例
        ratio = min(width / img_width, height / img_height)
        img_width *= ratio
        img_height *= ratio

        # 计算图片在PDF中的位置
        x = (width - img_width) / 2
        y = (height - img_height) / 2

        # 将图片插入到PDF中
        c.drawImage(image_path, x, y, width=img_width, height=img_height)
        c.showPage()  # 新的一页

    c.save()  # 保存PDF文件

# 示例使用
image_paths = get_image_paths_from_folder("images")  # 图片文件路径列表
output_pdf = "output.pdf"  # 输出的PDF文件名

images_to_pdf(image_paths, output_pdf)


程序 2024-12-20 14:45:23 8 2 291 pythonpdf图片
文章写得不错?我是土豪我要在线打赏!
在线打赏

昵称:

验证码:验证码

评论:

文章分类
系统
程序
数据
Office
随笔
热门文章
请不要奇怪,为什么最近博客的文章是几年前的内容
开篇第一章
ubuntu24.04无法安装向日葵,提示依赖libgconf-2-4怎么办?
ubuntu24.04安装网易云音乐
Ubuntu22.04中用thunar替换默认文件管理器,提示无法启动“TerminalEmulator“的首选应用程序
MySQL如何按每个分类查询10条数据,即MySQL如何每个分类查询10条数据
python读取旧的Excel文件的数据到新的Excel表中
nginx+php如何EventStream流式数据传输
python读取文件夹下图片并生成pdf文件
文章推荐
免责声明
关于博主
开篇第一章
随机推荐
空间搬家
搬校区了
css使pre自动换行
这只是广告
从火山互联学习linux VPS-2
关于博主
php判断远程文件是否存在
QQ.exe - 无法找到组件:没有找到ComRes.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。
Excel动态引用各表格指定单元格数据
学会控制自己的情绪
友情连接
春燕网络
谢润的博客