Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Initiation à Python et à Latex
Lambert-Veller Sylvain et Quirico Tommy
2
Sommaire Présentation Cahier des charges Démarches
Réalisation logicielle Bilan Conclusion
3
Présentation Langages utilisés dans ce projet:
XML : - ressemble à l’HTML (balises) - nombres de balises illimités - validation du fichier par une DTD - base de données au format texte Python : - langage de script - syntaxe simple - orienté objet - utilisé pour le traitement de fichiers textes Latex : - système logiciel de composition de documents - utilisé pour formater des textes
4
Cahier des charges Le but du projet :
- Génération d’un courrier au format PDF - Utilisation d’un fichier XML pour stocker les données - Utilisation de latex pour générer la lettre
5
Cahier des charges Le contenu du projet :
- Ecrire un fichier XML avec sa DTD qui correspond - Ecrire un script python qui va générer un courrier ou modifier le document XML
6
Démarches Les différentes étapes de ce projet ont été :
Mise en place d’un diagramme de classes Création d’un document XML et de sa DTD Création d’un script python pour travailler sur le document XML Introduire du langage latex dans le script python pour générer le courrier
7
Réalisation logicielle
Mise en place d’un diagramme de classes
8
Réalisation logicielle
Création d’un document XML et de sa DTD Le fichier XML est découpé en trois parties : Eléments « personnes » Eléments « lettres » Eléments « contenus » Utilisation d’id et d’idref pour bien séparer les parties Chaque élément « lettre » a une référence sur un contenu et 1 ou 2 personnes.
9
Création d’un document XML et de sa DTD
Exemple de la DTD : <!ELEMENT projet (personnes,lettres,contenus)> <!ATTLIST personne numpersonne ID #REQUIRED> <!ELEMENT contenu (date,objet,opening,corps,closing)> <!ATTLIST lettre numerolettre ID #REQUIRED numpersexpe IDREF #REQUIRED numpersdest IDREF #REQUIRED > Exemple du fichier XML : <contenu numcontenu="11"> <lettre numerocontenu="11" numerolettre="105" numpersdest="3" numpersexpe=« 4 »/>
10
Réalisation logicielle
Création d’un script python Dans ce script on va écrire comment : - Choisir une lettre, un contenu ou une personne - Créer une nouvelle personne - Créer un nouveau contenu - Créer un nouveau courrier - Afficher un courrier - Générer un courrier - Modifier un courrier, un contenu ou une personne - Sauvegarder les modifications
11
Réalisation logicielle
Choix de la librairie utilisée : Importation de l’api DOM : from xml.dom.minidom import parse SAX (Simple API for XML) DOM ( Document Object Model ) Avantages Rapide Peu coûteux en mémoire Peut gérer de GROS documents XML Représentation en arbre API de assez haut niveau Inconvénients Difficilement lisible Les gestionnaires ont tendances à devenir compliqués Pas « pythonique » du tout Gourmand en mémoire Lent sur des gros documents Choix : DOM Raisons : Sax non pythonique et DOM très simple pour python
12
Création d’un script python
Choisir une lettre, un contenu ou une personne On utilise cet algorithme pour les choix : fonction Nomfonction() : Tapez le numéro a choisir num = saisie au clavier Pour chaque élément : Si num = à l’attribut « numero » alors On retourne num sinon on retourne 0 fin si fin pour - Vérification des valeurs saisies par l’utilisateur
13
Création d’un script python
Créer une nouvelle personne Le principe est : récupération du dernier élément « personne » pour incrémenter l’id Création d’un élément : createElement("personne"). On insère un élément avec la fonction insertBefore(new_element_personne,premierePersonne.firstChild) Pour les éléments fils de l’élément « personne » : Création de l’élément ajout de l’élément: premierePersonne.appendChild(new_element_nom) Ajout de texte dans l’élément correspondant : new_element_nom.appendChild(fichierXML.createTextNode(nomp)) Affichage de l’id pour que l’utilisateur sache l’id de la personne - Obligation d’avoir au moins une personne dans le fichier XML - Possibilité d’avoir des données facultatives
14
Création d’un script python
Créer un nouveau courrier Les différentes étapes: Choix d’un expéditeur Choix d’un destinataire Choix d’un contenu Choix d’un type de courrier
15
Création d’un script python
Afficher un courrier Pour chaque élément on va chercher l’élément qui correspond et on l’affiche Exemple : for node2 in fichierXML.getElementsByTagName("contenu"): if(valeurcontenu==node2.getAttribute("numcontenu")): tabpersonne =node2.getElementsByTagName("date") premier = tabpersonne[0] date = premier.childNodes[0].nodeValue print "date:",date
16
Création d’un script python
Générer un courrier Les étapes sont : - Choix d’une lettre a générer - Écriture du fichier latex avec les données voulues
17
Création d’un script python
Écriture du fichier latex avec les données voulues - Aller chercher les données nécessaires dans le fichier XML - Création d’un fichier .ins - Création d’un fichier .tex - Génération en format PDF
18
Création d’un script python
Aller chercher les données nécessaires dans le fichier XML Les étapes sont : Aller chercher la lettre à générer Prendre les id qui se réfère au contenu et personne Aller chercher les données de l’élément grâce à l’id if (numeroLettre==node.getAttribute("numerolettre")): valeurpersonnexp = node.getAttribute("numpersexpe") for node1 in fichierXML.getElementsByTagName("personne"): if (valeurpersonnexp==node1.getAttribute("numpersonne")): tabpersonne = node1.getElementsByTagName("nom") premier = tabpersonne[0] nomp = premier.childNodes[0]
19
Création d’un script python
Création d’un fichier .ins Le fichier .ins contient les données en rapport avec l’expéditeur L’intégration dans le .tex se fait en faisant \institut Utilisation de commande présente dans la classe lettre (\adress , \lieu ) Ecriture dans le fichier grâce a la fonction write() Exemple : filout1.write('\\telephone{') filout1.write(telfixep.nodeValue) Raisons de ce fichier : répartition des informations
20
Création d’un script python
Création d’un fichier .tex Ce fichier va permettre la génération du courrier en format PDF Les étapes sont : Inclusion des packages et de la classe lettre Inclusion du fichier .ins créé précédemment Insertion des données récupérées dans le fichier XML
21
Création d’un script python
Création d’un fichier .tex Extrait du script python filout.write('\\begin{document} \n') filout.write('\\begin{letter}{%\n') filout.write('M \\textsc{') filout.write(nomp2.nodeValue) filout.write(' ') filout.write(prenomp2.nodeValue) filout.write('}') filout.write('\\') filout.write(numero2.nodeValue) filout.write(',') filout.write(rue2.nodeValue) filout.write(' \opening{Cher ') filout.write(opening.nodeValue) filout.write(' } \n') filout.write(corps.nodeValue) filout.write(' \n') filout.write(' \end{letter} \n') filout.write(' \end{document} \n') Extrait du fichier latex final \begin{document} \begin{letter}{% M \textsc{Quirico Tommy}\\7,rue Pierre Laplace \opening{Cher Madame, Monsieur } Corps du courrier \end{letter} \end{document}
22
Création d’un script python
Modifier un courrier, un contenu ou une personne Les différentes étapes : Demande à l’utilisateur si il veut modifier Si oui, demande de la nouvelle valeur Modification dans le fichier XML premier.childNodes[0].nodeValue= newValeur
23
Bilan Améliorations possibles : Réalisation de courrier au format PDF
Enregistrement des modifications Améliorations possibles : gérer les accents Insertion de logos pouvoir gérer la génération de CV
24
Conclusion Application opérationnelle
Ce que nous a apporté ce projet : Autonomie Appliquer les connaissances acquises en cours S’initier à d’autres langages tels que python et Latex
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.