Pdf / app.py
Docfile's picture
Update app.py
c1d9d4e verified
import streamlit as st
from PIL import Image
import io
def images_to_pdf(uploaded_images):
# Liste pour stocker les objets Image
image_list = []
for uploaded_file in uploaded_images:
image = Image.open(uploaded_file)
# Conversion en RGB pour la compatibilité PDF
if image.mode != "RGB":
image = image.convert("RGB")
image_list.append(image)
# Création d'un flux mémoire pour le PDF
pdf_buffer = io.BytesIO()
# La première image sert de base et les autres sont ajoutées en tant que pages
image_list[0].save(
pdf_buffer, format="PDF", resolution=100.0, save_all=True, append_images=image_list[1:]
)
pdf_buffer.seek(0)
return pdf_buffer
def main():
st.title("Conversion d'Images en PDF")
st.write("Uploader plusieurs images pour les convertir en un seul fichier PDF.\n"
"Assurez-vous de nommer vos fichiers (ex. : 1_image.jpg, 2_image.jpg, etc.) "
"pour que l'ordre soit respecté.")
# Uploader multiple d'images
uploaded_files = st.file_uploader("Choisissez vos images", type=["png", "jpg", "jpeg"], accept_multiple_files=True)
if uploaded_files:
# Tri des fichiers par nom (à adapter si nécessaire)
uploaded_files = sorted(uploaded_files, key=lambda x: x.name)
st.write("Ordre des images sélectionnées :")
for f in uploaded_files:
st.write(f.name)
if st.button("Convertir en PDF"):
pdf_file = images_to_pdf(uploaded_files)
st.download_button(
label="Télécharger le PDF",
data=pdf_file,
file_name="images_converties.pdf",
mime="application/pdf"
)
if __name__ == "__main__":
main()