Docfile commited on
Commit
dbd2262
·
verified ·
1 Parent(s): 4150f37

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -22
app.py CHANGED
@@ -1,6 +1,6 @@
1
  from flask import Flask, render_template, request, send_file
2
  import os
3
- import subprocess
4
  from docx import Document
5
  from docx.shared import Pt, Cm, RGBColor
6
  from docx.enum.text import WD_ALIGN_PARAGRAPH
@@ -8,8 +8,12 @@ from docx.enum.table import WD_TABLE_ALIGNMENT
8
  from docx.oxml.ns import nsdecls
9
  from docx.oxml import parse_xml
10
 
 
 
 
11
  # --- Classe de génération de document ---
12
  class EvaluationGymnique:
 
13
  def __init__(self):
14
  self.document = Document()
15
  self.document.sections[0].page_height = Cm(29.7)
@@ -255,7 +259,6 @@ class EvaluationGymnique:
255
  run.italic = True
256
  run.font.size = Pt(8)
257
 
258
-
259
  def ajouter_zone_note(self):
260
  zone_note = self.document.add_table(rows=1, cols=2)
261
  zone_note.style = 'Table Grid'
@@ -288,10 +291,6 @@ class EvaluationGymnique:
288
  self.document.add_paragraph().space_after = Pt(12)
289
  self.document.add_paragraph().space_after = Pt(12) # Un deuxième paragraphe pour plus d'espace
290
 
291
-
292
- # Modification 2: Modification de la méthode ajouter_lignes_correcteurs()
293
- # pour ajuster l'espacement est optionnelle, mais recommandée pour cohérence:
294
-
295
  def ajouter_lignes_correcteurs(self):
296
  # Commencer avec un peu d'espace
297
  para_intro = self.document.add_paragraph()
@@ -375,27 +374,34 @@ def index():
375
  evaluation.ajouter_element(name, cat, pts)
376
 
377
  # Génération du document DOCX
378
- filename = "evaluation_gymnastique.docx"
379
- evaluation.generer_document(filename)
380
 
381
  # Vérification du format de sortie demandé
382
  output_format = request.form.get("format", "docx")
383
  if output_format == "pdf":
384
- pdf_filename = "evaluation_gymnastique.pdf"
385
- # Conversion en PDF via LibreOffice en mode headless
386
- command = [
387
- "libreoffice",
388
- "--headless",
389
- "--convert-to",
390
- "pdf",
391
- filename,
392
- "--outdir",
393
- "."
394
- ]
395
- subprocess.run(command, check=True)
396
- return send_file(pdf_filename, as_attachment=True)
 
 
 
 
 
 
397
  else:
398
- return send_file(filename, as_attachment=True)
 
399
 
400
  return render_template("index.html")
401
 
 
1
  from flask import Flask, render_template, request, send_file
2
  import os
3
+ import convertapi
4
  from docx import Document
5
  from docx.shared import Pt, Cm, RGBColor
6
  from docx.enum.text import WD_ALIGN_PARAGRAPH
 
8
  from docx.oxml.ns import nsdecls
9
  from docx.oxml import parse_xml
10
 
11
+ # Configuration de ConvertAPI
12
+ convertapi.api_secret = 'secret_8wCI6pgOP9AxLVJG'
13
+
14
  # --- Classe de génération de document ---
15
  class EvaluationGymnique:
16
+ # Le reste de la classe reste inchangé...
17
  def __init__(self):
18
  self.document = Document()
19
  self.document.sections[0].page_height = Cm(29.7)
 
259
  run.italic = True
260
  run.font.size = Pt(8)
261
 
 
262
  def ajouter_zone_note(self):
263
  zone_note = self.document.add_table(rows=1, cols=2)
264
  zone_note.style = 'Table Grid'
 
291
  self.document.add_paragraph().space_after = Pt(12)
292
  self.document.add_paragraph().space_after = Pt(12) # Un deuxième paragraphe pour plus d'espace
293
 
 
 
 
 
294
  def ajouter_lignes_correcteurs(self):
295
  # Commencer avec un peu d'espace
296
  para_intro = self.document.add_paragraph()
 
374
  evaluation.ajouter_element(name, cat, pts)
375
 
376
  # Génération du document DOCX
377
+ docx_filename = "evaluation_personnalisee.docx"
378
+ evaluation.generer_document(docx_filename)
379
 
380
  # Vérification du format de sortie demandé
381
  output_format = request.form.get("format", "docx")
382
  if output_format == "pdf":
383
+ try:
384
+ # Utilisation de ConvertAPI pour convertir en PDF
385
+ pdf_result = convertapi.convert('pdf', {
386
+ 'File': docx_filename,
387
+ 'FileName': 'evaluation_personnalisee',
388
+ 'ConvertMetadata': 'false',
389
+ 'ConvertHeadings': 'false'
390
+ }, from_format='doc')
391
+
392
+ # Télécharger et sauvegarder le PDF localement
393
+ pdf_filename = "evaluation_personnalisee.pdf"
394
+ pdf_result.save_files('.')
395
+
396
+ # Renvoyer le fichier PDF généré
397
+ return send_file(pdf_filename, as_attachment=True)
398
+ except Exception as e:
399
+ # En cas d'erreur avec l'API, afficher l'erreur et proposer le DOCX
400
+ print(f"Erreur lors de la conversion en PDF: {e}")
401
+ return send_file(docx_filename, as_attachment=True)
402
  else:
403
+ # Renvoyer le fichier DOCX si demandé
404
+ return send_file(docx_filename, as_attachment=True)
405
 
406
  return render_template("index.html")
407