使用Python将图片转换为PDF格式的三种常见方法

 更新时间:2025年08月18日 10:03:58   作者:detayun  
在日常工作和学习中,我们经常需要将多张图片合并成一个PDF文件,以便于分享或打印,Python提供了多种库来实现这一需求,本文将详细介绍三种常用的方法:img2pdf库、Pillow库和PyMuPDF库,并附上完整的代码示例,需要的朋友可以参考下

引言

在日常工作和学习中,我们经常需要将多张图片合并成一个PDF文件,以便于分享或打印。Python提供了多种库来实现这一需求,本文将详细介绍三种常用的方法:img2pdf库Pillow库PyMuPDF库,并附上完整的代码示例。

方法一:使用img2pdf库

简介

img2pdf是一个专门用于将图片转换为PDF的高效工具,支持多种图片格式(如JPEG、PNG等),且转换过程中不会损失图片质量。

安装

pip install img2pdf

代码示例

import img2pdf

# 定义图片路径列表
image_paths = ['image1.jpg', 'image2.png', 'image3.jpeg']

# 将图片转换为PDF字节流
pdf_bytes = img2pdf.convert(image_paths)

# 保存为PDF文件
with open('output.pdf', 'wb') as f:
    f.write(pdf_bytes)

print("PDF文件已成功生成!")

优势

  • 高效快速:直接将图片数据嵌入PDF,无需重新编码。
  • 无损转换:保持原始图片质量。
  • 支持多图:自动将多张图片分页到同一PDF中。

方法二:使用Pillow库

简介

Pillow是Python中常用的图像处理库,支持打开、编辑和保存多种图片格式,也可用于将图片转换为PDF。

安装

pip install Pillow

代码示例(单张图片)

from PIL import Image

# 打开图片
image = Image.open('input.jpg')

# 保存为PDF(默认分辨率72DPI)
image.save('output.pdf', 'PDF', resolution=300)  # 设置分辨率为300DPI

print("单张图片已转换为PDF!")

代码示例(多张图片合并)

from PIL import Image
import os

# 定义图片路径列表
image_paths = ['image1.jpg', 'image2.png', 'image3.jpeg']

# 打开所有图片并转换为RGB模式
images = [Image.open(img).convert('RGB') for img in image_paths]

# 保存第一张图片为PDF,并追加剩余图片
images[0].save(
    'combined.pdf',
    'PDF',
    save_all=True,
    append_images=images[1:]
)

print("多张图片已合并为PDF!")

注意事项

  • 分辨率调整:通过resolution参数可优化PDF清晰度。
  • 模式转换:确保图片为RGB模式,否则可能无法保存为PDF。

方法三:使用PyMuPDF库

简介

PyMuPDF(即fitz)是一个功能强大的PDF处理库,支持添加图片、调整页面布局等高级操作。

安装

pip install pymupdf

代码示例

import fitz  # PyMuPDF的别名

# 创建空白PDF文档
doc = fitz.open()

# 添加图片到PDF
for img_path in ['image1.jpg', 'image2.png']:
    img = fitz.open(img_path)  # 打开图片
    rect = fitz.Rect(0, 0, img.media_box.width, img.media_box.height)
    page = doc.new_page(width=rect.width, height=rect.height)  # 创建新页面
    page.insert_image(rect, filename=img_path)  # 插入图片

# 保存PDF
doc.save('output.pdf')
doc.close()

print("PDF文件已生成!")

优势

  • 灵活布局:可自定义页面大小、边距等。
  • 高级功能:支持添加水印、合并PDF等操作。

方案对比

方法适用场景优点缺点
img2pdf批量转换、追求速度和无损质量快速、高效、无损仅支持基础转换
Pillow单张图片转换、简单合并轻量级、易用多图合并需额外处理
PyMuPDF需要定制PDF布局或高级功能功能强大、灵活学习成本稍高

常见问题解答

1. 如何调整PDF的页面大小?

  • img2pdf:通过layout_fun参数自定义布局(需指定纸张尺寸)。
  • PyMuPDF:在new_page中设置widthheight参数。

2. 转换后的PDF文件过大怎么办?

  • 使用img2pdf时,确保图片格式为JPEG或PNG(已压缩格式)。
  • 通过Pillowsavefig参数调整分辨率(如dpi=150)。

3. 支持哪些图片格式?

  • 所有方法均支持JPEG、PNG、BMP等常见格式。
  • img2pdf还支持TIFF、WebP等格式。

总结

  • 推荐方案
    • 批量转换:优先使用img2pdf库。
    • 简单需求:选择Pillow库。
    • 高级定制:使用PyMuPDF库。

通过本文的三种方法,您可以轻松实现图片到PDF的转换,并根据具体需求选择最合适的工具。

到此这篇关于使用Python将图片转换为PDF格式的三种常见方法的文章就介绍到这了,更多相关Python将图片转为PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中dictionary items()系列函数的用法实例

    Python中dictionary items()系列函数的用法实例

    这篇文章主要介绍了Python中dictionary items()系列函数的用法,很实用的函数,需要的朋友可以参考下
    2014-08-08
  • Python中os模块的实例用法

    Python中os模块的实例用法

    在本篇文章里小编给大家整理的是一篇关于Python中os模块的实例用法,有兴趣的朋友们可以学习下。
    2021-06-06
  • 利用Python实现从PDF到CSV的转换

    利用Python实现从PDF到CSV的转换

    将PDF转换为CSV极大地提升了数据的实用价值,Python作为一种强大的编程语言,能够高效完成这一转换任务,本文将介绍如何利用Python实现从PDF到CSV的转换,需要的朋友可以参考下
    2024-07-07
  • 利用Python实现读取Word表格计算汇总并写入Excel

    利用Python实现读取Word表格计算汇总并写入Excel

    这篇文章主要给大家介绍了关于如何利用Python实现读取Word表格计算汇总并写入Excel的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • 基于Python实现傻瓜式GIF制作工具

    基于Python实现傻瓜式GIF制作工具

    有没有什么内容形式,比小视频更小,比普通图片更丰富?有,GIF动态图就是其中一种形式。本文将为大家介绍如何通过Python实现一个傻瓜式的gif生成工具,感兴趣的可以了解一下
    2021-12-12
  • Python中对象迭代与反迭代的技巧总结

    Python中对象迭代与反迭代的技巧总结

    这篇文章将通过实例给大家分享Python中对象迭代与反迭代的技巧,对大家学习或者使用python具有一定的参考借鉴价值。有需要的下面来一起看看吧。
    2016-09-09
  • python 使用sys.stdin和fileinput读入标准输入的方法

    python 使用sys.stdin和fileinput读入标准输入的方法

    今天小编就为大家分享一篇python 使用sys.stdin和fileinput读入标准输入的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python 实现列表的切片操作允许索引超出范围

    python 实现列表的切片操作允许索引超出范围

    这篇文章主要介绍了python 实现列表的切片操作允许索引超出范围,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 使用Python Turtle库带你玩转创意绘图(画个心,写个花)

    使用Python Turtle库带你玩转创意绘图(画个心,写个花)

    Python的turtle库提供了一种有趣且易于上手的编程绘图方式,适合初学者学习,通过本文的介绍,你将了解到如何进行画布设置、画笔属性的调整、画笔的移动与控制,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • Django实现发送邮件找回密码功能

    Django实现发送邮件找回密码功能

    在各大网站上,一定都遇到过找回密码的问题,通常采用的方式是通过发送带有验证码的邮件进行身份验证,本文将介绍通过Django实现邮件找回密码功能,需要的朋友可以参考下
    2019-08-08

最新评论