1

如何使用 fpdf 将目录中的所有图像输出到相同的 pdf 输出。我可以获取文件夹中的最后一个文件以输出为 pdf 或为每个图像输出多个 pdf,但并非同一 pdf 中的所有图像都像目录一样。我确定这是 for 循环,但无法正确排序。

from fpdf import FPDF
from PIL import Image
import glob
import os


# set here
image_directory = '/home/User/Desktop/images/'
extensions = ('*.jpg','*.jpeg','*.png','*.gif')


# set 0 if you want to fit pdf to image
# unit : pt
margin = 10

imagelist=[]
for ext in extensions:
    imagelist.extend(glob.glob(os.path.join(image_directory,ext)))

pdf = FPDF(unit="pt", format=[width + 2*margin, height + 2*margin])
pdf.add_page()
cover = Image.open(imagePath)
width, height = cover.size

for imagePath in imagelist:
    pdf.image(imagePath, margin, margin)
    destination = os.path.splitext(imagePath)[0]
pdf.output(destination + ".pdf", "F")
4

2 回答 2

1

仍然不确定为什么 fpdf 没有将图像文件的迭代分组为单个 PDF 输出,但 img2pdf 接受的文件名列表工作得非常好。

import img2pdf

imagefiles = ["test1.jpg", "test2.png"]

with open("images.pdf","wb") as f:
    f.write(img2pdf.convert(imagefiles))
于 2017-04-03T18:44:52.267 回答
0

您必须在 for 循环开始时为每张图片开始一个新页面,并以将所有内容写入 PDF 结束。

pdf = FPDF()
imagefiles = ["test1.png","test2.png"]
for one_image in imagefiles:
   pdf.add_page()
   pdf.image(one_image,x,y,w,h)
pdf.output("out.pdf")
于 2018-11-21T10:24:46.290 回答