Untitled

 avatar
unknown
plain_text
7 days ago
2.2 kB
4
Indexable
from PIL import Image
from fpdf import FPDF
import os

# Configurações
imagens_por_pagina = 3  # Altere para 2 se quiser 2 imagens por página
pasta_imagens = "./Photos2"
output_pdf = "resultado3.pdf"
margem_direita = 70  # Margem de 50 mm para notas
espaco_entre_fotos = 5  # Espaço de 5 mm entre as fotos
largura_linha = 0.5  # Espessura da linha de separação

# Criação do PDF
pdf = FPDF(orientation='P', unit='mm', format='A4')
largura_pagina, altura_pagina = 210, 297  # Dimensões da página A4 em mm
largura_disponivel = largura_pagina - margem_direita  # Ajustar a largura disponível para as imagens
altura_disponivel = (altura_pagina - ((imagens_por_pagina - 1) * espaco_entre_fotos)) / imagens_por_pagina  # Espaço para cada imagem incluindo o espaço entre elas

# Obter e ordenar a lista de imagens pela numeração em seus nomes
imagens = [img for img in os.listdir(pasta_imagens) if img.lower().startswith('img_') and img.lower().endswith(('png', 'jpg', 'jpeg'))]
imagens.sort(key=lambda x: int(x.split('_')[1].split('.')[0]))  # Ordenar por número após 'IMG_'

# Adicionar imagens ao PDF
for i, imagem_nome in enumerate(imagens):
    imagem_caminho = os.path.join(pasta_imagens, imagem_nome)
    if i % imagens_por_pagina == 0:
        pdf.add_page()

    # Redimensionar imagens para caber na largura disponível e altura calculada
    nova_largura = largura_disponivel
    nova_altura = altura_disponivel

    # Calcular posição da imagem
    x = (largura_pagina - margem_direita - nova_largura) / 2
    y = (altura_disponivel + espaco_entre_fotos) * (i % imagens_por_pagina)

    # Adicionar imagem ao PDF
    pdf.image(imagem_caminho, x=x, y=y, w=nova_largura, h=nova_altura)

    # Adicionar linha preta abaixo da imagem (exceto a última imagem na página)
    if (i % imagens_por_pagina) != (imagens_por_pagina - 1):
        pdf.set_line_width(largura_linha)
        pdf.set_draw_color(0, 0, 0)  # Cor preta
        linha_y = y + nova_altura + (espaco_entre_fotos / 2)
        pdf.line(10, linha_y, largura_pagina - 10, linha_y)  # Linhas de ponta a ponta da página

# Salvar o PDF
pdf.output(output_pdf)
print(f"PDF criado com sucesso: {output_pdf}")
Editor is loading...
Leave a Comment