reportlab 把多个图片合成pdf
时间: 2023-09-27 22:12:09 浏览: 42
可以使用reportlab的Canvas类来合成多个图片到一个pdf文件中。
首先,需要安装reportlab模块:
```
pip install reportlab
```
然后可以使用如下代码来实现:
```python
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from PIL import Image
# 设置pdf页大小为letter
c = canvas.Canvas("images.pdf", pagesize=letter)
# 打开多个图片并添加到pdf中
for i in range(1, 6):
filename = f"image{i}.jpg"
img = Image.open(filename)
width, height = img.size
max_width = letter[0] - 50
max_height = letter[1] - 50
# 如果图片大小超过了一页大小,则缩放图片
if width > max_width or height > max_height:
ratio = min(max_width / width, max_height / height)
width = int(width * ratio)
height = int(height * ratio)
img = img.resize((width, height))
c.drawImage(img, 25, letter[1]-height-25, width=width, height=height)
c.showPage()
# 保存pdf文件
c.save()
```
该代码会打开5张名为`image1.jpg`,`image2.jpg`,`image3.jpg`,`image4.jpg`和`image5.jpg`的图片,并将它们合成到一个名为`images.pdf`的pdf文件中。如果图片太大,超过一页的大小,则会缩放图片以适应一页的大小。每个图片都会另起一页,最后保存pdf文件。