Spaces:
Running
Running
File size: 2,411 Bytes
ef81ad8 c3883a9 ef81ad8 0e66c2e c3883a9 ef81ad8 c3883a9 ef81ad8 c3883a9 ef81ad8 c3883a9 ef81ad8 612150f ef81ad8 612150f ef81ad8 612150f ef81ad8 612150f ef81ad8 612150f ef81ad8 612150f c3883a9 ef81ad8 612150f ef81ad8 612150f ef81ad8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
from flask import Flask, send_file, jsonify
import fitz # PyMuPDF pour manipuler le PDF
import tempfile
import os
app = Flask(__name__)
# Chemin vers le PDF source
PDF_FILE = "yipunu.pdf"
# Fonction pour générer une image temporaire d'une page du PDF
def generate_temp_image(page_number, dpi):
try:
# Ouvre le PDF
with fitz.open(PDF_FILE) as doc:
# Vérifie que le numéro de page est valide
if page_number < 1 or page_number > len(doc):
raise ValueError(f"Numéro de page invalide : {page_number}")
# Extrait la page et génère une image
page = doc[page_number - 1]
pixmap = page.get_pixmap(dpi=dpi)
# Crée un fichier temporaire pour stocker l'image
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".jpg")
pixmap.save(temp_file.name)
return temp_file.name
except Exception as e:
raise RuntimeError(f"Erreur lors de la génération de l'image : {e}")
# Endpoint pour récupérer une image basse résolution
@app.route("/low_res/<int:page_number>")
def get_low_res(page_number):
temp_path = None
try:
# Génère une image basse résolution
temp_path = generate_temp_image(page_number, dpi=72)
return send_file(temp_path, mimetype="image/jpeg")
except Exception as e:
return jsonify({"error": str(e)}), 500
finally:
# Supprime le fichier temporaire après utilisation
if temp_path and os.path.exists(temp_path):
os.remove(temp_path)
# Endpoint pour récupérer une image haute résolution
@app.route("/high_res/<int:page_number>")
def get_high_res(page_number):
temp_path = None
try:
# Génère une image haute résolution
temp_path = generate_temp_image(page_number, dpi=300)
return send_file(temp_path, mimetype="image/jpeg")
except Exception as e:
return jsonify({"error": str(e)}), 500
finally:
# Supprime le fichier temporaire après utilisation
if temp_path and os.path.exists(temp_path):
os.remove(temp_path)
from flask import render_template
@app.route("/viewer")
def viewer():
return render_template("viewer.html") # Assurez-vous que viewer.html est dans le dossier templates/
# Point d'entrée de l'application
if __name__ == "__main__":
app.run(debug=True) |