如何将文件夹中的所有JPG文件转换为PDF并将它们组合起来?

时间:2017-03-18 22:14:56

标签: python pdf

我在文件夹(/ img /)中有一些1924×2972 JPG文件。我想1)将它们转换为PDF和2)将它们组合成一个PDF。但我没有成功。我是python的新手。请让我知道如何继续。

from PIL import Image
import glob
from fpdf import FPDF #
imagelist = []
for filename in glob.glob('img/*.jpg'): #assuming jpg
    im=Image.open(filename)
    imagelist.append(im)

pdf = FPDF()
# imagelist is the list with all image filenames
for image in imagelist:
    pdf.add_page()
    pdf.image(image, 10,210,297)
pdf.output("yourfile.pdf", "F")

错误:

       File "<ipython-input-39-9fb5b6258b5e>", line 1, in <module>
    pdf.image(image, 10,210,297)

  File "/Users/xyz/anaconda/lib/python3.6/site-packages/fpdf/fpdf.py", line 150, in wrapper
    return fn(self, *args, **kwargs)

  File "/Users/xyz/anaconda/lib/python3.6/site-packages/fpdf/fpdf.py", line 960, in image
    if not name in self.images:

TypeError: unhashable type: 'JpegImageFile'

1 个答案:

答案 0 :(得分:2)

在你的第二个循环中,你需要实际引用每个jpg的路径:

pdf.image(image, 10,210,297)

编辑:另外,我认为您只需要每张图片的路径(而不是使用Image.open打开每张图片。请尝试以下操作:

import glob
from fpdf import FPDF #
imagelist = glob.glob('img/*.jpg')

pdf = FPDF()
# imagelist is the list with all image filenames
for image in imagelist:
    pdf.add_page()
    pdf.image(image, 10,210,297)
pdf.output("yourfile.pdf", "F")