shannanle 发表于 2022-6-10 20:02

图片批量转PDF

之前论坛里找了几个,都会出现,如果图片是PNG的话,就错误提示“cannot save mode RGBA”,加了convert('RGB')也不行,试了好多方法,最终找到可以用的办法
学习PYTHON时间不长,代码有点乱
from PIL import Image
from tkinter import filedialog
import os

def to_pdf(folder_path):
    files = os.listdir(folder_path)
    img_files = []
    sources = []
    for file in files:
      if 'png' in file or 'jpg' in file:
            img_files.append(folder_path + file)
    img_files.sort()

    if 'png' in img_files:
      output1 = Image.open(img_files)
      output = Image.new('RGB',output1.size,(255,255,255))
      output.paste(output1,mask=output1.split())
      img_files.pop(0)
    elif 'jpg' in img_files:
      output = Image.open(img_files)
      img_files.pop(0)      
      
    for file in img_files:
      if 'png' in file:
            rgba_file = Image.open(file)
            rgb_file = Image.new('RGB',rgba_file.size,(255,255,255))
            rgb_file.paste(rgba_file, mask=rgba_file.split())
            sources.append(rgb_file)
      elif 'jpg' in file:
            img_file = Image.open(file)
            if img_file.mode == 'RGB':
                img_file = img_file.convert('RGB')
            sources.append(img_file)   
    pdf_file_path = filedialog.asksaveasfilename(title='请选择PDF文件保存目录',filetypes=[('PDF文件','.pdf')])
if pdf_file_path.endswith('.pdf') == False:
      pdf_file_path = pdf_file_path + '.pdf'
output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)

if __name__ == "__main__":
    img_dir = filedialog.askdirectory(title='请选择图片所在文件夹') + '/'
    to_pdf(img_dir)

382115330 发表于 2022-6-10 20:02

感谢楼主分享

aD960201 发表于 2022-6-10 20:18

谢谢大佬分享

ybdj 发表于 2022-6-10 20:23

谢谢分享!

msefelix 发表于 2022-6-10 20:35

6666

wwww 发表于 2022-6-11 00:36

谢谢@Thanks!

yhw231 发表于 2022-6-11 08:25

顶帖是一种态度,也是一种尊重。

林相 发表于 2022-6-11 11:25

66666666666666666666666666666

wernb 发表于 2022-7-2 07:58

多谢楼主分享

逍遥自在158 发表于 2022-7-2 08:00

先收藏了,万一用到呢
页: [1] 2
查看完整版本: 图片批量转PDF