Spaces:
Sleeping
Sleeping
Update templates/philosophie.html
Browse files- templates/philosophie.html +126 -164
templates/philosophie.html
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
<html lang="fr">
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
@@ -69,66 +69,59 @@
|
|
69 |
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
|
70 |
.error { color: #c0392b; text-align: center; margin-top: 20px; }
|
71 |
|
72 |
-
/* --- Styles du Rendu "Cahier" --- */
|
73 |
.dissertation-paper {
|
74 |
font-family: 'Kalam', cursive;
|
75 |
font-size: 18px;
|
76 |
color: #1a2a4c;
|
77 |
background-color: #fdfaf4;
|
78 |
line-height: 1.6;
|
79 |
-
background-image: linear-gradient(transparent 94%, #d8e2ee 95%, transparent 96%);
|
80 |
-
background-size: 100% 25px;
|
81 |
border-left: 3px solid #ffaaab;
|
82 |
-
padding: 30px
|
83 |
-
margin: 40px
|
84 |
min-height: 500px;
|
85 |
-
position: relative;
|
86 |
}
|
87 |
|
88 |
-
/*
|
89 |
-
.dissertation-paper
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
height: 15px;
|
96 |
-
border-radius: 50%;
|
97 |
-
background-color: #f4f4f9;
|
98 |
-
border: 2px solid #ddd;
|
99 |
-
box-shadow: 0 100px 0 #f4f4f9, 0 100px 0 2px #ddd, 0 200px 0 #f4f4f9, 0 200px 0 2px #ddd;
|
100 |
}
|
101 |
|
102 |
.dissertation-paper h2 {
|
103 |
font-size: 1.4em;
|
104 |
text-align: center;
|
105 |
-
margin-bottom:
|
106 |
-
|
107 |
-
text-decoration: underline;
|
108 |
}
|
109 |
|
110 |
.dissertation-paper h3 {
|
111 |
-
font-size: 1.
|
112 |
-
margin:
|
|
|
113 |
text-transform: uppercase;
|
114 |
-
text-decoration: underline;
|
115 |
-
|
116 |
}
|
117 |
|
118 |
.dissertation-paper .development-block {
|
119 |
-
margin:
|
|
|
120 |
}
|
121 |
|
122 |
.dissertation-paper p {
|
123 |
text-align: justify;
|
124 |
-
margin:
|
125 |
-
color: #1a2a4c;
|
126 |
}
|
127 |
|
128 |
.dissertation-paper .prof {
|
129 |
text-align: center;
|
130 |
font-style: italic;
|
131 |
-
margin-bottom:
|
|
|
132 |
}
|
133 |
|
134 |
.dissertation-paper .indented {
|
@@ -136,31 +129,44 @@
|
|
136 |
}
|
137 |
|
138 |
.dissertation-paper .transition {
|
139 |
-
margin:
|
|
|
140 |
font-style: italic;
|
141 |
-
color: #4a6a9c;
|
|
|
142 |
}
|
143 |
|
144 |
.dissertation-paper .pdf-button-container {
|
145 |
text-align: center;
|
146 |
-
margin-top: 40px;
|
|
|
|
|
147 |
}
|
148 |
|
149 |
.dissertation-paper .pdf-button {
|
150 |
font-family: 'Lato', sans-serif;
|
151 |
font-size: 16px;
|
152 |
-
padding:
|
153 |
-
width: auto;
|
154 |
display: inline-block;
|
155 |
}
|
156 |
|
157 |
-
/* Styles pour
|
158 |
@media print {
|
|
|
|
|
|
|
|
|
159 |
.dissertation-paper {
|
160 |
margin: 0;
|
|
|
161 |
box-shadow: none;
|
162 |
border: none;
|
163 |
}
|
|
|
|
|
|
|
|
|
164 |
}
|
165 |
</style>
|
166 |
</head>
|
@@ -173,13 +179,6 @@
|
|
173 |
<button type="submit" id="submit-btn">Générer la dissertation</button>
|
174 |
</form>
|
175 |
|
176 |
-
<!-- Section de test pour démonstration -->
|
177 |
-
<div style="margin-top: 30px; padding: 20px; background-color: #e8f4f8; border-radius: 5px;">
|
178 |
-
<h3>Test de génération PDF</h3>
|
179 |
-
<p>Cliquez sur le bouton ci-dessous pour tester la génération PDF avec un contenu d'exemple :</p>
|
180 |
-
<button id="test-demo" style="background-color: #27ae60; margin-top: 10px;">Générer exemple de dissertation</button>
|
181 |
-
</div>
|
182 |
-
|
183 |
<div id="loader" class="loader"></div>
|
184 |
<div id="result-container"></div>
|
185 |
</div>
|
@@ -188,59 +187,9 @@
|
|
188 |
document.addEventListener('DOMContentLoaded', () => {
|
189 |
const form = document.getElementById('philo-form');
|
190 |
const submitBtn = document.getElementById('submit-btn');
|
191 |
-
const testDemoBtn = document.getElementById('test-demo');
|
192 |
const loader = document.getElementById('loader');
|
193 |
const resultContainer = document.getElementById('result-container');
|
194 |
|
195 |
-
// Gestionnaire pour le bouton de test
|
196 |
-
testDemoBtn.addEventListener('click', () => {
|
197 |
-
const sampleData = {
|
198 |
-
sujet: "Sommes-nous toujours conscients ?",
|
199 |
-
prof: "M. Rousseau",
|
200 |
-
introduction: "La conscience semble être ce qui nous définit en tant qu'êtres humains. Pourtant, nous passons une grande partie de notre existence dans des états où notre conscience paraît altérée ou diminuée : le sommeil, la distraction, l'automatisme. Cette question nous amène à interroger la nature même de la conscience et ses limites.\n\nLa problématique qui se pose est la suivante : la conscience est-elle un état permanent de l'esprit humain, ou connaît-elle des interruptions et des variations ? Nous examinerons d'abord les arguments qui plaident pour une conscience permanente, puis nous analyserons les phénomènes qui semblent la remettre en question, avant de proposer une conception nuancée de la conscience.",
|
201 |
-
parties: [
|
202 |
-
{
|
203 |
-
chapeau: "I. La thèse de la conscience permanente",
|
204 |
-
arguments: [
|
205 |
-
{
|
206 |
-
paragraphe_argumentatif: "Descartes, dans ses Méditations métaphysiques, établit que la pensée est l'essence même de l'âme. « Je pense, donc je suis » implique une conscience constante de soi. Selon cette perspective, même dans le sommeil ou la distraction, une forme de conscience subsiste toujours, car penser c'est être conscient."
|
207 |
-
},
|
208 |
-
{
|
209 |
-
paragraphe_argumentatif: "Cette permanence de la conscience peut également être comprise comme une continuité de l'identité personnelle. John Locke montre que c'est la conscience de nos expériences passées qui assure notre identité à travers le temps. Sans cette continuité, nous ne serions plus la même personne."
|
210 |
-
}
|
211 |
-
],
|
212 |
-
transition: "Cependant, cette vision de la conscience permanente se heurte à des objections importantes issues de l'observation de nos états mentaux quotidiens."
|
213 |
-
},
|
214 |
-
{
|
215 |
-
chapeau: "II. Les limites et interruptions de la conscience",
|
216 |
-
arguments: [
|
217 |
-
{
|
218 |
-
paragraphe_argumentatif: "Le sommeil profond constitue un défi majeur pour la thèse de la conscience permanente. Pendant certaines phases du sommeil, nous n'avons aucune expérience consciente, aucun souvenir. Comment alors maintenir que nous sommes toujours conscients ?"
|
219 |
-
},
|
220 |
-
{
|
221 |
-
paragraphe_argumentatif: "Henri Bergson met en évidence les phénomènes d'automatisme dans la vie quotidienne. Nous accomplissons de nombreuses actions sans y prêter attention consciente : marcher, conduire sur un trajet familier, ou répéter des gestes habituels. Ces comportements révèlent des zones d'inconscience dans notre existence éveillée."
|
222 |
-
}
|
223 |
-
],
|
224 |
-
transition: "Ces observations nous invitent à repenser la nature même de la conscience et à adopter une approche plus nuancée."
|
225 |
-
},
|
226 |
-
{
|
227 |
-
chapeau: "III. Pour une conception graduée de la conscience",
|
228 |
-
arguments: [
|
229 |
-
{
|
230 |
-
paragraphe_argumentatif: "Plutôt que de concevoir la conscience comme un état binaire (présent ou absent), il convient de la comprendre comme un phénomène à degrés. William James propose l'idée d'un « courant de conscience » qui varie en intensité et en clarté selon les moments et les situations."
|
231 |
-
},
|
232 |
-
{
|
233 |
-
paragraphe_argumentatif: "Cette conception permet de réconcilier les observations contradictoires : nous sommes toujours conscients dans le sens où il y a toujours une forme de présence à soi ou au monde, mais cette conscience varie en intensité, en clarté et en contenu. Même dans le sommeil, une conscience minimale subsiste qui nous permet de nous réveiller."
|
234 |
-
}
|
235 |
-
]
|
236 |
-
}
|
237 |
-
],
|
238 |
-
conclusion: "La question de la permanence de la conscience ne peut recevoir de réponse tranchée. Si nous ne sommes pas toujours pleinement conscients au sens d'une vigilance maximale et d'une réflexivité complète, il semble néanmoins qu'une forme de conscience, même minimale, nous accompagne en permanence.\n\nCette réflexion nous enseigne que la conscience humaine est plus complexe et plus nuancée qu'il n'y paraît. Elle nous invite à être attentifs aux différents degrés de notre présence au monde et à nous-mêmes, et à cultiver une conscience plus éveillée de notre propre conscience."
|
239 |
-
};
|
240 |
-
|
241 |
-
renderDissertation(sampleData);
|
242 |
-
});
|
243 |
-
|
244 |
form.addEventListener('submit', async (event) => {
|
245 |
event.preventDefault();
|
246 |
const question = document.getElementById('question').value.trim();
|
@@ -250,36 +199,57 @@
|
|
250 |
return;
|
251 |
}
|
252 |
|
253 |
-
//
|
|
|
|
|
|
|
|
|
254 |
submitBtn.disabled = true;
|
255 |
submitBtn.textContent = 'Génération en cours...';
|
256 |
loader.style.display = 'block';
|
257 |
resultContainer.innerHTML = '';
|
258 |
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
|
274 |
-
|
275 |
-
|
276 |
-
} finally {
|
277 |
-
// Reset UI
|
278 |
submitBtn.disabled = false;
|
279 |
submitBtn.textContent = 'Générer la dissertation';
|
280 |
loader.style.display = 'none';
|
281 |
-
}
|
282 |
-
}
|
283 |
|
284 |
function renderDissertation(data) {
|
285 |
let html = `
|
@@ -287,25 +257,25 @@
|
|
287 |
<h2>Sujet : ${data.sujet}</h2>
|
288 |
<p class="prof">Prof : ${data.prof}</p>
|
289 |
<h3>Introduction</h3>
|
290 |
-
<p class="indented">${data.introduction.replace(/\n/g, '
|
291 |
`;
|
292 |
|
293 |
data.parties.forEach((partie, index) => {
|
294 |
html += `<div class="development-block">`;
|
295 |
-
html += `<
|
296 |
partie.arguments.forEach(arg => {
|
297 |
-
html += `<p class="indented">${arg.paragraphe_argumentatif.replace(/\n/g, '
|
298 |
});
|
299 |
html += `</div>`;
|
300 |
|
301 |
if (partie.transition) {
|
302 |
-
html += `<p class="indented transition">${partie.transition.replace(/\n/g, '
|
303 |
}
|
304 |
});
|
305 |
|
306 |
html += `
|
307 |
<h3>Conclusion</h3>
|
308 |
-
<p class="indented">${data.conclusion.replace(/\n/g, '
|
309 |
<div class="pdf-button-container">
|
310 |
<button class="pdf-button" id="download-pdf">Télécharger en PDF</button>
|
311 |
</div>
|
@@ -314,70 +284,62 @@
|
|
314 |
|
315 |
resultContainer.innerHTML = html;
|
316 |
|
317 |
-
//
|
318 |
document.getElementById('download-pdf').addEventListener('click', generatePDF);
|
319 |
}
|
320 |
|
321 |
function generatePDF() {
|
322 |
const element = document.getElementById('dissertation-content');
|
323 |
-
|
324 |
-
showError("Erreur : contenu de la dissertation non trouvé.");
|
325 |
-
return;
|
326 |
-
}
|
327 |
-
|
328 |
-
// Clone l'élément pour éviter de modifier l'original
|
329 |
-
const clone = element.cloneNode(true);
|
330 |
|
331 |
-
//
|
332 |
-
|
333 |
-
if (pdfButton) {
|
334 |
-
pdfButton.remove();
|
335 |
-
}
|
336 |
-
|
337 |
-
// Créer un conteneur temporaire
|
338 |
-
const tempContainer = document.createElement('div');
|
339 |
-
tempContainer.style.position = 'absolute';
|
340 |
-
tempContainer.style.left = '-9999px';
|
341 |
-
tempContainer.style.top = '0';
|
342 |
-
tempContainer.style.width = '210mm'; // Largeur A4
|
343 |
-
tempContainer.appendChild(clone);
|
344 |
-
document.body.appendChild(tempContainer);
|
345 |
|
|
|
346 |
const options = {
|
347 |
-
margin: [
|
348 |
filename: 'dissertation-philosophie.pdf',
|
349 |
-
image: {
|
|
|
|
|
|
|
350 |
html2canvas: {
|
351 |
-
scale: 2,
|
352 |
useCORS: true,
|
|
|
353 |
allowTaint: true,
|
354 |
-
|
|
|
|
|
355 |
},
|
356 |
jsPDF: {
|
357 |
-
unit: '
|
358 |
format: 'a4',
|
359 |
orientation: 'portrait',
|
360 |
-
|
|
|
|
|
|
|
361 |
}
|
362 |
};
|
363 |
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
}
|
380 |
-
|
381 |
}
|
382 |
|
383 |
function showError(message) {
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
<html lang="fr">
|
3 |
<head>
|
4 |
<meta charset="UTF-8">
|
|
|
69 |
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
|
70 |
.error { color: #c0392b; text-align: center; margin-top: 20px; }
|
71 |
|
72 |
+
/* --- Styles du Rendu "Cahier" (optimisés pour PDF) --- */
|
73 |
.dissertation-paper {
|
74 |
font-family: 'Kalam', cursive;
|
75 |
font-size: 18px;
|
76 |
color: #1a2a4c;
|
77 |
background-color: #fdfaf4;
|
78 |
line-height: 1.6;
|
|
|
|
|
79 |
border-left: 3px solid #ffaaab;
|
80 |
+
padding: 30px;
|
81 |
+
margin: 40px -30px -30px -30px;
|
82 |
min-height: 500px;
|
|
|
83 |
}
|
84 |
|
85 |
+
/* Lignes simulées avec des bordures au lieu de background-image */
|
86 |
+
.dissertation-paper p,
|
87 |
+
.dissertation-paper h2,
|
88 |
+
.dissertation-paper h3 {
|
89 |
+
border-bottom: 1px solid rgba(216, 226, 238, 0.3);
|
90 |
+
padding-bottom: 8px;
|
91 |
+
margin-bottom: 16px;
|
|
|
|
|
|
|
|
|
|
|
92 |
}
|
93 |
|
94 |
.dissertation-paper h2 {
|
95 |
font-size: 1.4em;
|
96 |
text-align: center;
|
97 |
+
margin-bottom: 24px;
|
98 |
+
font-weight: bold;
|
|
|
99 |
}
|
100 |
|
101 |
.dissertation-paper h3 {
|
102 |
+
font-size: 1.2em;
|
103 |
+
margin-top: 32px;
|
104 |
+
margin-bottom: 20px;
|
105 |
text-transform: uppercase;
|
106 |
+
text-decoration: underline;
|
107 |
+
font-weight: bold;
|
108 |
}
|
109 |
|
110 |
.dissertation-paper .development-block {
|
111 |
+
margin-top: 24px;
|
112 |
+
margin-bottom: 24px;
|
113 |
}
|
114 |
|
115 |
.dissertation-paper p {
|
116 |
text-align: justify;
|
117 |
+
margin-bottom: 16px;
|
|
|
118 |
}
|
119 |
|
120 |
.dissertation-paper .prof {
|
121 |
text-align: center;
|
122 |
font-style: italic;
|
123 |
+
margin-bottom: 24px;
|
124 |
+
font-size: 0.9em;
|
125 |
}
|
126 |
|
127 |
.dissertation-paper .indented {
|
|
|
129 |
}
|
130 |
|
131 |
.dissertation-paper .transition {
|
132 |
+
margin-top: 20px;
|
133 |
+
margin-bottom: 20px;
|
134 |
font-style: italic;
|
135 |
+
color: #4a6a9c;
|
136 |
+
font-weight: 500;
|
137 |
}
|
138 |
|
139 |
.dissertation-paper .pdf-button-container {
|
140 |
text-align: center;
|
141 |
+
margin-top: 40px;
|
142 |
+
border: none;
|
143 |
+
padding: 0;
|
144 |
}
|
145 |
|
146 |
.dissertation-paper .pdf-button {
|
147 |
font-family: 'Lato', sans-serif;
|
148 |
font-size: 16px;
|
149 |
+
padding: 12px 24px;
|
150 |
+
width: auto;
|
151 |
display: inline-block;
|
152 |
}
|
153 |
|
154 |
+
/* Styles spécifiques pour l'impression PDF */
|
155 |
@media print {
|
156 |
+
.pdf-button-container {
|
157 |
+
display: none !important;
|
158 |
+
}
|
159 |
+
|
160 |
.dissertation-paper {
|
161 |
margin: 0;
|
162 |
+
padding: 20px;
|
163 |
box-shadow: none;
|
164 |
border: none;
|
165 |
}
|
166 |
+
|
167 |
+
body {
|
168 |
+
background: white;
|
169 |
+
}
|
170 |
}
|
171 |
</style>
|
172 |
</head>
|
|
|
179 |
<button type="submit" id="submit-btn">Générer la dissertation</button>
|
180 |
</form>
|
181 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
<div id="loader" class="loader"></div>
|
183 |
<div id="result-container"></div>
|
184 |
</div>
|
|
|
187 |
document.addEventListener('DOMContentLoaded', () => {
|
188 |
const form = document.getElementById('philo-form');
|
189 |
const submitBtn = document.getElementById('submit-btn');
|
|
|
190 |
const loader = document.getElementById('loader');
|
191 |
const resultContainer = document.getElementById('result-container');
|
192 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
form.addEventListener('submit', async (event) => {
|
194 |
event.preventDefault();
|
195 |
const question = document.getElementById('question').value.trim();
|
|
|
199 |
return;
|
200 |
}
|
201 |
|
202 |
+
// Simuler la génération d'une dissertation (à remplacer par votre API)
|
203 |
+
simulateGeneration(question);
|
204 |
+
});
|
205 |
+
|
206 |
+
function simulateGeneration(question) {
|
207 |
submitBtn.disabled = true;
|
208 |
submitBtn.textContent = 'Génération en cours...';
|
209 |
loader.style.display = 'block';
|
210 |
resultContainer.innerHTML = '';
|
211 |
|
212 |
+
// Simulation d'une réponse (remplacez ceci par votre appel API réel)
|
213 |
+
setTimeout(() => {
|
214 |
+
const mockData = {
|
215 |
+
sujet: question,
|
216 |
+
prof: "M. Dupont",
|
217 |
+
introduction: "L'introduction de cette dissertation explore les différentes dimensions du sujet proposé. Nous commençons par définir les termes clés et établir la problématique qui guidera notre réflexion. Cette question soulève des enjeux philosophiques fondamentaux que nous devrons examiner avec rigueur.",
|
218 |
+
parties: [
|
219 |
+
{
|
220 |
+
chapeau: "Dans un premier temps, nous examinerons la dimension théorique de cette question.",
|
221 |
+
arguments: [
|
222 |
+
{
|
223 |
+
paragraphe_argumentatif: "Premier argument : Cette perspective nous permet de comprendre les fondements conceptuels du problème. En effet, l'analyse théorique révèle des aspects souvent négligés dans l'approche commune de cette question."
|
224 |
+
},
|
225 |
+
{
|
226 |
+
paragraphe_argumentatif: "Deuxième argument : L'examen des sources philosophiques classiques nous éclaire sur les différentes interprétations possibles. Les penseurs comme Descartes, Kant ou Nietzsche ont chacun apporté des éléments de réponse qui méritent d'être confrontés."
|
227 |
+
}
|
228 |
+
],
|
229 |
+
transition: "Cependant, cette approche théorique trouve ses limites, ce qui nous amène à considérer une perspective plus pratique."
|
230 |
+
},
|
231 |
+
{
|
232 |
+
chapeau: "Dans un second temps, nous analyserons les implications pratiques et concrètes.",
|
233 |
+
arguments: [
|
234 |
+
{
|
235 |
+
paragraphe_argumentatif: "L'expérience quotidienne nous confronte à des situations qui remettent en question les conclusions purement théoriques. La réalité vécue apporte une richesse d'exemples qui nuancent notre compréhension initiale."
|
236 |
+
},
|
237 |
+
{
|
238 |
+
paragraphe_argumentatif: "Les applications contemporaines de cette réflexion philosophique montrent l'actualité et la pertinence du questionnement. Dans notre société moderne, ces enjeux prennent une dimension particulière qu'il convient d'examiner."
|
239 |
+
}
|
240 |
+
]
|
241 |
+
}
|
242 |
+
],
|
243 |
+
conclusion: "En conclusion, cette dissertation a permis d'explorer les multiples facettes du sujet proposé. Nous avons vu que l'approche théorique, bien qu'essentielle, doit être complétée par une analyse pratique pour saisir toute la complexité de la question. Cette réflexion ouvre de nouvelles perspectives et invite à poursuivre l'investigation philosophique sur ces thèmes fondamentaux."
|
244 |
+
};
|
245 |
|
246 |
+
renderDissertation(mockData);
|
247 |
+
|
|
|
|
|
248 |
submitBtn.disabled = false;
|
249 |
submitBtn.textContent = 'Générer la dissertation';
|
250 |
loader.style.display = 'none';
|
251 |
+
}, 2000);
|
252 |
+
}
|
253 |
|
254 |
function renderDissertation(data) {
|
255 |
let html = `
|
|
|
257 |
<h2>Sujet : ${data.sujet}</h2>
|
258 |
<p class="prof">Prof : ${data.prof}</p>
|
259 |
<h3>Introduction</h3>
|
260 |
+
<p class="indented">${data.introduction.replace(/\n/g, '<br>')}</p>
|
261 |
`;
|
262 |
|
263 |
data.parties.forEach((partie, index) => {
|
264 |
html += `<div class="development-block">`;
|
265 |
+
html += `<p class="indented">${partie.chapeau.replace(/\n/g, '<br>')}</p>`;
|
266 |
partie.arguments.forEach(arg => {
|
267 |
+
html += `<p class="indented">${arg.paragraphe_argumentatif.replace(/\n/g, '<br>')}</p>`;
|
268 |
});
|
269 |
html += `</div>`;
|
270 |
|
271 |
if (partie.transition) {
|
272 |
+
html += `<p class="indented transition">${partie.transition.replace(/\n/g, '<br>')}</p>`;
|
273 |
}
|
274 |
});
|
275 |
|
276 |
html += `
|
277 |
<h3>Conclusion</h3>
|
278 |
+
<p class="indented">${data.conclusion.replace(/\n/g, '<br>')}</p>
|
279 |
<div class="pdf-button-container">
|
280 |
<button class="pdf-button" id="download-pdf">Télécharger en PDF</button>
|
281 |
</div>
|
|
|
284 |
|
285 |
resultContainer.innerHTML = html;
|
286 |
|
287 |
+
// Attacher l'événement au bouton PDF nouvellement créé
|
288 |
document.getElementById('download-pdf').addEventListener('click', generatePDF);
|
289 |
}
|
290 |
|
291 |
function generatePDF() {
|
292 |
const element = document.getElementById('dissertation-content');
|
293 |
+
const pdfButtonContainer = element.querySelector('.pdf-button-container');
|
|
|
|
|
|
|
|
|
|
|
|
|
294 |
|
295 |
+
// Cacher le bouton temporairement
|
296 |
+
pdfButtonContainer.style.display = 'none';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
|
298 |
+
// Options améliorées pour html2pdf
|
299 |
const options = {
|
300 |
+
margin: [0.5, 0.5, 0.5, 0.5],
|
301 |
filename: 'dissertation-philosophie.pdf',
|
302 |
+
image: {
|
303 |
+
type: 'jpeg',
|
304 |
+
quality: 0.95
|
305 |
+
},
|
306 |
html2canvas: {
|
307 |
+
scale: 2,
|
308 |
useCORS: true,
|
309 |
+
letterRendering: true,
|
310 |
allowTaint: true,
|
311 |
+
logging: false,
|
312 |
+
height: element.scrollHeight,
|
313 |
+
width: element.scrollWidth
|
314 |
},
|
315 |
jsPDF: {
|
316 |
+
unit: 'in',
|
317 |
format: 'a4',
|
318 |
orientation: 'portrait',
|
319 |
+
compress: true
|
320 |
+
},
|
321 |
+
pagebreak: {
|
322 |
+
mode: ['avoid-all', 'css', 'legacy']
|
323 |
}
|
324 |
};
|
325 |
|
326 |
+
// Attendre un peu pour que le DOM soit stable
|
327 |
+
setTimeout(() => {
|
328 |
+
html2pdf()
|
329 |
+
.set(options)
|
330 |
+
.from(element)
|
331 |
+
.save()
|
332 |
+
.then(() => {
|
333 |
+
// Remettre le bouton visible
|
334 |
+
pdfButtonContainer.style.display = 'block';
|
335 |
+
console.log('PDF généré avec succès');
|
336 |
+
})
|
337 |
+
.catch((error) => {
|
338 |
+
console.error('Erreur lors de la génération du PDF:', error);
|
339 |
+
pdfButtonContainer.style.display = 'block';
|
340 |
+
showError('Erreur lors de la génération du PDF. Veuillez réessayer.');
|
341 |
+
});
|
342 |
+
}, 100);
|
343 |
}
|
344 |
|
345 |
function showError(message) {
|