Use Python para poner las imágenes en la carpeta en un pdf

introducción de fondo

Al ver un curso de "análisis matricial" de un maestro de up, el material didáctico del maestro de up se guarda en Qzone en forma de imágenes. La forma de la imagen no es fácil de aprender, por lo que quiero convertir las imágenes guardadas en el "curso de análisis de matriz" a pdf a través del código Python, y mantener la relación de aspecto de la imagen sin cambios, y el archivo pdf se ordena en el momento actual. . Ordene los nombres de archivo de las imágenes antes de agregarlos para que el orden de las páginas en el PDF coincida con el orden de las imágenes.
inserte la descripción de la imagen aquí

el código

import os
import datetime
from PIL import Image
from fpdf import FPDF

# 图片所在文件夹路径
img_folder = "矩阵分析课件"

# 获取文件夹中的所有文件
images = [img for img in os.listdir(img_folder) if img.endswith(".jpg") or img.endswith(".png") or img.endswith(".jpeg")]

# 按照文件名排序
images.sort()

# 创建一个pdf对象
pdf = FPDF(unit="mm")

# 遍历每一个图片
for i in range(len(images)):
    img_path = os.path.join(img_folder, images[i])
    
    # 使用PIL库打开图片并获取尺寸
    img = Image.open(img_path)
    width, height = img.size

    # 转换尺寸单位到毫米
    width_mm = width * 0.264583
    height_mm = height * 0.264583

    # 把图片添加到pdf
    pdf.add_page(format=(width_mm, height_mm))
    pdf.image(img_path, x = 0, y = 0, w = width_mm, h = height_mm)

# 以当前时间命名PDF文件
now = datetime.datetime.now()
pdf_name = now.strftime("%Y-%m-%d_%H-%M-%S") + ".pdf"

# 保存pdf文件
pdf.output(pdf_name, "F")

análisis de código

La siguiente es una explicación detallada de cada parte del código:

  1. Importe las bibliotecas necesarias:

    import os
    import datetime
    from PIL import Image
    from fpdf import FPDF
    

    Aquí importamos cuatro bibliotecas: os, datetime, PIL y fpdf. Las bibliotecas os y datetime son bibliotecas integradas de Python para manejar el sistema operativo y las operaciones relacionadas con la hora. PIL (Pillow) es una biblioteca de procesamiento de imágenes que utilizamos para obtener las dimensiones de una imagen. La biblioteca FPDF se utiliza para crear y editar archivos PDF.

  2. Especifique la carpeta donde se encuentran las imágenes y obtenga todos los archivos de imagen:

    # 图片所在文件夹路径
    img_folder = "矩阵分析课件"
    
    # 获取文件夹中的所有文件
    images = [img for img in os.listdir(img_folder) if img.endswith(".jpg") or img.endswith(".png") or img.endswith(".jpeg")]
    
    # 按照文件名排序
    images.sort()
    

    Esta parte del código primero establece la ruta a la carpeta donde se encuentran las imágenes y luego usa la función listdir de la biblioteca os para obtener todos los nombres de archivo en esa carpeta. La comprensión de lista se utiliza para filtrar archivos de imagen .jpg, .png y .jpeg y agregar sus nombres a la lista. Finalmente, ordene los nombres de archivo en la lista.

  3. Cree un objeto FPDF e itere sobre cada imagen:

    # 创建一个pdf对象
    pdf = FPDF(unit="mm")
    
    # 遍历每一个图片
    for i in range(len(images)):
        img_path = os.path.join(img_folder, images[i])
        
        # 使用PIL库打开图片并获取尺寸
        img = Image.open(img_path)
        width, height = img.size
    
        # 转换尺寸单位到毫米
        width_mm = width * 0.264583
        height_mm = height * 0.264583
    
        # 把图片添加到pdf
        pdf.add_page(format=(width_mm, height_mm))
        pdf.image(img_path, x = 0, y = 0, w = width_mm, h = height_mm)
    

    Primero, cree un objeto FPDF y establezca la unidad en mm. Luego, itere a través de cada imagen, abra la imagen usando la biblioteca PIL y obtenga las dimensiones, y luego convierta las dimensiones de la imagen de píxeles a milímetros. Finalmente, agregue una nueva página para cada imagen y agregue la imagen a esa página. El tamaño de cada página se establecerá de acuerdo con el tamaño de su imagen correspondiente.

  4. Use la hora actual para nombrar y guardar el archivo PDF:

    # 以当前时间命名PDF文件
    now = datetime.datetime.now()
    pdf_name = now.strftime("%Y-%m-%d_%H-%M-%S") + ".pdf"
    
    # 保存pdf文件
    pdf.output(pdf_name, "F")
    

    Esta parte del código primero obtiene la fecha y la hora actuales, y luego usa la función strftime para formatear la hora en una cadena y usarla como el nombre del archivo PDF. Finalmente, guarde el archivo PDF utilizando el método de salida del objeto FPDF.

anexo

Por favor agregue una descripción de la imagen

Supongo que te gusta

Origin blog.csdn.net/Waldocsdn/article/details/131176819
Recomendado
Clasificación