python图片合并pdf
时间: 2025-06-23 15:29:17 浏览: 13
### 使用Python将多个图像文件合并成一个PDF文档
为了满足需求,可以采用两种主要方式之一:使用`PIL`库或是`FPDF`库。
#### 方法一:基于PIL库的方式
这种方法适用于那些希望通过简单的脚本快速实现目标的人群。通过遍历指定路径下的所有JPEG格式图片,并依次将其添加至同一个PDF文件中[^1]。
```python
from PIL import Image
import os
images = []
for filename in sorted(os.listdir('path_to_jpgs')):
if not filename.endswith('.jpg'):
continue
with Image.open(f'path_to_jpgs/{filename}') as im:
images.append(im.convert('RGB'))
if images:
first_image, *rest_images = images
first_image.save(
'output.pdf',
save_all=True,
append_images=rest_images
)
```
此段代码首先创建了一个列表用于存储转换后的图像对象;接着利用`os.listdir()`获取给定目录内的所有文件名并按字母表顺序排列;随后循环读取每张`.jpg`结尾的图片,打开它们并将颜色模式统一调整为适合打印的颜色空间(即RGB),再加入到之前准备好的列表里;最后选取第一个元素作为封面页码,调用其内置方法`save()`输出最终形成的单个PDF文档的同时也将剩余部分附加进去[^3]。
#### 方法二:基于FPDF库的方式
如果偏好更灵活的操作选项,则可以选择安装第三方扩展包——`fpdf2`。它允许开发者更加精细地控制页面布局以及样式设置等方面的内容[^2]。
```python
from fpdf import FPDF
from PIL import Image
import glob
class PDF(FPDF):
def add_page_from_image(self, image_path):
self.add_page()
img = Image.open(image_path)
width, height = img.size
# Adjust the size of page to fit the image
self.set_auto_page_break(False)
self.image(image_path, w=self.w*(width/height), h=self.h)
def create_pdf(images_folder='.', output_filename='merged_output.pdf'):
pdf = PDF(unit="pt", format=[792, 612]) # A4 paper dimensions in points (portrait orientation)
for img_file in sorted(glob.glob(f"{images_folder}/*.jpg")):
pdf.add_page_from_image(img_file)
pdf.output(output_filename)
create_pdf('./your_image_directory')
```
上述实例定义了一个继承自`FPDF`类的新类`PDF`,其中包含了专门用来向PDF中插入新一页的方法`add_page_from_image()`。该函数接收一张图片的位置参数,负责计算合适的尺寸比例后加载进来显示于当前空白处。之后,在主程序逻辑里面按照一定规则筛选符合条件的目标素材集合,逐一执行新增动作直至全部处理完毕为止,最终导出完整的电子档成果物。
阅读全文
相关推荐


















