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