img2pdf包:https://github.com/josch/img2pdf
pip install img2pdf
img2pdf是一个用于将光栅图像无损转换为PDF格式的工具包。使用img2pdf时,优先事项按顺序应为:始终无损:嵌入PDF中的图像将始终具有与输入的每个像素相同的颜色信息;文件较小:如果可能的话,输入图像和输出PDF之间的文件大小差异将仅为PDF容器本身的开销。
先创建一个文件夹保存压缩后的图片
图片转pdf
import os
import img2pdf
from PIL import Image
from tqdm import tqdm
# 指定目录路径
directory = r'xxx'
result_directory = './pdf_resized'
# 获取目录下所有图片文件名
image_files = [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.jpg') or f.endswith('.png')]
# 按照文件名排序
image_files.sort()
compression_ratio = 1/2
# 压缩图片并收集数据
for img_file in tqdm(image_files):
img_path = os.path.join(directory, img_file)
result_path = os.path.join(result_directory, os.path.basename(img_file))
img = Image.open(img_path)
# 计算新的尺寸
new_size = (int(img.width * compression_ratio), int(img.height * compression_ratio))
img = img.resize(new_size)
img.save(result_path)
# 获取目录下所有图片文件名
result_image_files = [os.path.join(result_directory , f) for f in os.listdir(directory) if f.endswith('.jpg') or f.endswith('.png')]
with open("result.pdf","wb") as f:
f.write(img2pdf.convert(result_image_files))
print('end')