from flask import Flask, render_template, request, send_file, redirect
from PyPDF2 import PdfReader, PdfWriter
import os
import uuid

app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        pdf_file = request.files.get('pdf_file')
        if not pdf_file or not pdf_file.filename.endswith('.pdf'):
            return "Fichier PDF non valide", 400

        filename = f"{uuid.uuid4()}.pdf"
        filepath = os.path.join(UPLOAD_FOLDER, filename)
        pdf_file.save(filepath)

        reader = PdfReader(filepath)
        total_pages = len(reader.pages)
        return render_template('edit.html', filename=filename, total_pages=total_pages)

    return render_template('index.html')


@app.route('/edit', methods=['POST'])
def edit_pdf():
    filename = request.form.get('filename')
    pages_to_remove = request.form.getlist('remove_pages')
    filepath = os.path.join(UPLOAD_FOLDER, filename)

    try:
        reader = PdfReader(filepath)
        writer = PdfWriter()

        pages_to_remove = [int(i) for i in pages_to_remove]

        for i, page in enumerate(reader.pages):
            if i not in pages_to_remove:
                writer.add_page(page)

        output_path = os.path.join(UPLOAD_FOLDER, f"modified_{filename}")
        with open(output_path, 'wb') as f:
            writer.write(f)

        return send_file(output_path, as_attachment=True, download_name='modified.pdf')

    except Exception as e:
        return f"Erreur lors de l'édition du PDF : {str(e)}", 500

