问题内容
我在编写一个将多页 TIFF 文件转换为 PDF 的函数时遇到了一些问题。以下是我使用的代码片段:
// def tiff_to_pdf(tiff_path, pdf_directory):
try:
os.makedirs(pdf_directory, exist_ok=True)
file_name = os.path.basename(tiff_path).replace('.tif', '.pdf').replace('.tiff', '.pdf')
pdf_path = os.path.join(pdf_directory, file_name)
with Image.open(tiff_path) as img:
c = canvas.Canvas(pdf_path, pagesize=A4)
page_width, page_height = A4
converted_pages = 0
try:
for i in range(img.n_frames): # 遍历所有的帧
img.seek(i)
if img.mode != 'RGB':
img = img.convert('RGB')
img_width, img_height = img.size
ratio = min(page_width / img_width, page_height / img_height)
new_width, new_height = img_width * ratio, img_height * ratio
x, y = (page_width - new_width) / 2, (page_height - new_height) / 2
c.drawImage(ImageReader(img), x, y, width=new_width, height=new_height)
c.showPage()
converted_pages += 1
except EOFError:
print(f"Reached end of file for {tiff_path}")
c.save()
return "Success", None, img.n_frames, converted_pages
except Exception as e:
return "Failed", str(e), None, None
问题是,当 img.mode 为 ‘1’(表示黑白图像)时,调用 convert(‘RGB’) 转换模式失败,并且程序只能输出多页 TIFF 文件的第一页,后续页面都无法转换。但是也不会报错,输出的图像只有第一页
正常这个库是正常支持黑白图像转换为RGB格式的
有人遇到过类似问题吗?如何在这种情况下正确地将 mode=1 的图像转换为 RGB,并确保多页 TIFF 的所有页面都能被正确写入 PDF?