| import streamlit as st |
| from PIL import Image |
| import io |
|
|
| def images_to_pdf(uploaded_images): |
| |
| image_list = [] |
| for uploaded_file in uploaded_images: |
| image = Image.open(uploaded_file) |
| |
| if image.mode != "RGB": |
| image = image.convert("RGB") |
| image_list.append(image) |
| |
| |
| pdf_buffer = io.BytesIO() |
| |
| 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é.") |
|
|
| |
| uploaded_files = st.file_uploader("Choisissez vos images", type=["png", "jpg", "jpeg"], accept_multiple_files=True) |
| |
| if uploaded_files: |
| |
| 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() |
|
|