合成一个文件夹下的所有图片为pdf
from PIL import Image
import os
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
def combine_imgs_pdf(folder_path, pdf_file_path):
"""
合成一个文件夹下的所有图片为pdf
Args:
folder_path (str): 源文件夹
pdf_file_path (str): 输出路径
"""
files = os.listdir(folder_path)
png_files = []
sources = []
for file in files:
if 'png' in file or 'jpg' in file:
if os.path.getsize(os.path.join(folder_path, file)) > 10000:
png_files.append(os.path.join(folder_path, file))
png_files.sort()
output = Image.open(png_files[0])
png_files.pop(0)
for file in png_files:
png_file = Image.open(file)
if png_file.mode == "RGB":
png_file = png_file.convert("RGB")
sources.append(png_file)
output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)
if __name__ == "__main__":
folder = r"D:\folder"
pdfFile = r"D:\out.pdf"
combine_imgs_pdf(folder, pdfFile)
一个目录下有多个目录, 每个子目录下有图片, 一个文件夹一个pdf文件, pdf文件名字为文件夹的名字
from PIL import Image
import os
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
"""
合并文件夹下的所有图片为pdf, 一个文件夹一个pdf文件, pdf文件名字为文件夹的名字
"""
def combine_imgs_pdf(folder_path, pdf_file_path):
"""
合成一个文件夹下的所有图片为pdf
Args:
folder_path (str): 源文件夹
pdf_file_path (str): 输出路径
"""
files = os.listdir(folder_path)
img_file= []
sources = []
for file in files:
if 'png' in file or 'jpg' in file:
if os.path.getsize(os.path.join(folder_path, file)) > 10000:
img_files.append(os.path.join(folder_path, file))
img_files.sort()
output = Image.open(img_files[0])
if output.mode != "RGB":
output = output.convert("RGB")
img_files.pop(0)
for file in img_files:
img_file= Image.open(file)
if img_file.mode != "RGB":
img_file= img_file.convert("RGB")
sources.append(img_file)
output.save(pdf_file_path, "pdf", save_all=True, append_images=sources)
def create_book_pdf(book_folder, out_base_path):
out_folder = os.path.splitext(os.path.basename(book_folder))[0]
folders = [f for f in os.listdir(book_folder) if os.path.isdir(os.path.join(book_folder, f))]
for folder_name in folders:
image_folder = os.path.join(book_folder, folder_name)
out_folder = os.path.join(out_base_path, out_folder)
if not os.path.exists(out_folder):
os.makedirs(os.path.join(out_base_path, out_folder))
pdfFile = os.path.join(out_folder, f"{folder_name}.pdf")
if not os.path.exists(pdfFile):
try:
combine_imgs_pdf(image_folder, pdfFile)
except:
print(f"{image_folder}->{pdfFile} 失败")
print("完成")
if __name__ == "__main__":
create_book_pdf("F:/img_book/book1", "f:/pdf_book")