2

我正在尝试使用 img2pdf 将 jpg 转换为 pdf。

它适用于大多数 jpg 但不是全部。

这是我的脚本:

import img2pdf
import PIL.Image
import os
image = PIL.Image.open("Lidl.jpg")
pdf_bytes = img2pdf.convert(image.filename)
file = open(pdf_path, "wb")
file.write("file.pdf")
image.close()
file.close()

这是我得到的错误:

Traceback (most recent call last):
  File "test.py", line 8, in <module>
    pdf_bytes = img2pdf.convert(image.filename)
  File "/home/ksb/Dropbox/Python/imap/venv/lib/python3.6/site-packages/img2pdf.py", line 1829, in convert
    ) in read_images(rawdata, kwargs["colorspace"], kwargs["first_frame_only"]):
  File "/home/ksb/Dropbox/Python/imap/venv/lib/python3.6/site-packages/img2pdf.py", line 1191, in read_images
    imgdata, imgformat, default_dpi, colorspace, rawdata
  File "/home/ksb/Dropbox/Python/imap/venv/lib/python3.6/site-packages/img2pdf.py", line 1030, in get_imgmetadata
    'Image "%s": invalid rotation (%d)' % (im.name, value)
NameError: name 'im' is not defined

如果我查看图像元数据,它会说:

未知旋转值 0
ColorSpace=sRGB

是否可以设置旋转值?

非常感谢任何提示。

BR克雷斯顿

4

2 回答 2

0

我想问题出在下面的代码行上。

file.write("file.pdf")

在这里尝试传递你从convert函数中获得的字节。

file.write(pdf_bytes)

对于您遇到的错误,您可以尝试如下所述。尝试使用库imdirect

from PIL import Image
import imdirect
img = Image.open('Lidl.jpg')
img_rotated = imdirect.autorotate(img)

上面的代码片段是从库的项目描述页面复制的。另请阅读快速说明,了解为什么会出现此类问题。

https://pypi.org/project/imdirect/

如果仍然无法正常工作,作为最后尝试的一部分,请在打开后和转换为字节之前旋转图像,并使用满足您要求的所需角度。

image = PIL.Image.open("Lidl.jpg")
image.rotate(90) #90 is rough number, you calculate, what you need.
pdf_bytes = img2pdf.convert(image.filename)
于 2020-02-24T21:39:31.363 回答
0
from PIL import Image

image1 = Image.open(r'C:\Users\Ron\Desktop\Test\image1.png')
image2 = Image.open(r'C:\Users\Ron\Desktop\Test\image2.png')
image3 = Image.open(r'C:\Users\Ron\Desktop\Test\image3.png')
image4 = Image.open(r'C:\Users\Ron\Desktop\Test\image4.png')
 
im1 = image1.convert('RGB')
im2 = image2.convert('RGB')
im3 = image3.convert('RGB')
im4 = image4.convert('RGB')

imagelist = [im2,im3,im4]

im1.save(r'C:\Users\Ron\Desktop\Test\myImages.pdf',save_all=True, append_images=imagelist)

这对我来说是工作

于 2021-01-21T18:56:34.073 回答