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()