Ce projet Java permet de générer des PDF personnalisés incluant du texte, des images et des QR Codes.
Il gère également la sauvegarde et le chargement des projets via JSON, et propose une logique contrôleur pour orchestrer la génération.
src/
├─ Vue/
│ ├─ UserInterface.java
│ └─ PersonalizationInterface.java
├─ Modele/
│ ├─ DonnéeFormulaire
│ ├─ DonnéesPersonnalisation.java
│ ├─ ColorData.java
│ └─ ProjectPDF.java
├─ Services/
│ ├─ ServicePDF.java
│ ├─ ServiceQR.java
│ └─ ColorAdapter.java
├─ Controleur/
│ └─ ControleurFormulaire.java
└─ JUNIT/
└─ TestUnit.java
- Rôle : Interface graphique pour personnaliser le PDF (polices, couleurs, images, QR Code).
- Fonctionnement :
- Permet de choisir police, taille, couleur, gras, italique, souligné pour le titre et le texte.
- Permet de configurer dimensions et positions pour l’image et le QR Code.
- Prévisualisation en temps réel des polices et couleurs.
- Boutons :
- Générer le PDF : transmet les données au contrôleur pour créer le
PDF. - Sauvegarder le projet : sauvegarde les personnalisations dans un
JSON.
- Générer le PDF : transmet les données au contrôleur pour créer le
- Exemple d’usage dans ControleurFormulaire :
PersonalizationInterface window = new PersonalizationInterface(controleur);
window.setVisible(true);- Rôle : Interface graphique principale pour saisir le titre, texte, lien et choisir le PDF/image.
- Fonctionnement :
- Champs de saisie pour :
Titre,Texte,LienChemin de sortie PDFChemin de l'image à insérer
- Boutons :
- Passez à la personnalisation : valide les champs et ouvre
PersonalizationInterface. - Choisir l'emplacement : ouvre un
JFileChooserpour sélectionner le PDF. - Choisir l'image à incorporer : ouvre un
JFileChooserpour l’image. - Charger un projet : charge un projet existant via le
ControleurFormulaire.
- Passez à la personnalisation : valide les champs et ouvre
- Champs de saisie pour :
- Exemple d’usage dans ControleurFormulaire :
UserInterface window = new UserInterface(controleur);
window.setVisible(true);- Rôle : Contient le contenu du PDF (
titre,texte,lien) ainsi que sa personnalisation pour centralisation. - Fonctionnement :
Titre: String.Texte: String.Lien: String.- Personnalisation via
DonnéesPersonalisation - Utilsé par
ControleurFormulairepour sauvegarder les données et les utilisé pour la `génération de PDF/QR Code.
- Exemple :
DonnéeFormulaire contenu = new DonnéeFormulaire();
contenu.setTitle("Ceci est un exemple");
contenu.setTexte("Cette exemple démontre le fonctionnement de DonnéeFormulaire");
contenu.setLien("http://Ceci_est_le_lien/DuQRCode.com`");- Rôle : Contient toutes les options de personnalisation pour le PDF.
- Fonctionnement :
- Polices :
FontName,FontSize,Bold,Italic,Underline. - Couleurs via
ColorData. - Dimensions et positions pour l’image et le QR Code.
- Polices :
- Exemple :
DonnéesPersonnalisation perso = new DonnéesPersonnalisation();
perso.setTitleFontName("Arial");
perso.setTitleFontSize(18);
perso.setTitleUnderline(true);- Rôle : Représente une couleur RGB.
- Fonctionnement : Stocke les valeurs
r,g,bpour être utilisées pariText7.
- Rôle : Représente un projet PDF complet.
- Fonctionnement :
- Contient le
titre,texte,lienetoptions de personnalisation. - Sauvegarde au format JSON via
ProjectPDF.sauvegarderProjet(). - Chargement depuis JSON via
ProjectPDF.chargetProjet().
- Contient le
- Exemple :
ProjectPDF projet = new ProjectPDF();
projet.setTitre("Mon PDF");
projet.setTexte("Ceci est un texte");
projet.setLien("https://example.com");
projet.setPersonnalisation(perso);- Rôle : Génère un QR Code à partir d’une
URLoutexte. - Fonctionnement :
- Vérifie que les données sont valides.
- Utilise
ZXing (QRCodeWriter)pour générer leBitMatrix. - Convertit le
BitMatrixenBufferedImagepuis en Image iText. - Retourne
nullsi les données sont invalides.
- Exemple :
Image qr = ServiceQR.genererQRCode("https://github.com", 200, 200);- Rôle : Génère un PDF complet avec
texte,imagesetQR Codes. - Fonctionnement :
- Validation des paramètres.
- Configuration des
polices: recherche dansC:\Windows\Fonts, fallback surHelvetica.
- Création du PDF :
- Ajout du
titreavecpolice,taille,couleuretsoulignement. - Ajout du
texteavec personnalisation. - Ajout d’image si fourni (dimensions et position personnalisables).
- Génération et ajout du
QR CodeviaServiceQR. - Ajout du lien texte sous le
QR Code. - Gestion des exceptions.
- Ajout du
- Exemple :
ServicePDF.generatePDF(
"Titre Test",
"Ceci est un texte",
"https://openai.com",
"C:\\temp\\monpdf.pdf",
"C:\\temp\\image.png",
perso
);- Rôle : Interface entre les données utilisateur et la génération PDF.
- Fonctionnement :
- demandeUInterfaceDonnées() : reçoit
titre,texte,lienet cheminsPDF/Image. - Valide les champs et stocke les données.
- Appelle
ServicePDF.generatePDF()pour créer le PDF.
- demandeUInterfaceDonnées() : reçoit
- Rôle : Contient les tests unitaires.
- Tests inclus :
- QR Code : lien valide, lien vide, dimensions correctes.
- PDF : génération valide, génération avec champs vides.
- JSON : sauvegarde et chargement.
- Contrôleur : validation des données et exceptions.
- Outils :
JUnit 5(assertThrows, assertDoesNotThrow, assertTrue, assertEquals). - Fichiers temporaires pour les tests
- tempPDF : PDF temporaire pour test de génération.
- tempIMG : Image temporaire pour test d’insertion.
- tempJSON : JSON temporaire pour test de sauvegarde/chargement.
- Génération de PDF personnalisés (
titre,texte,image,QR Code). - Gestion des projets via JSON (sauvegarde et chargement).
- Tests unitaires complets pour chaque fonctionnalité.
- Séparation claire : Modele pour les données, Services pour le traitement, Controleur pour la logique métier.
Java 17+iText7(PDF)ZXing(QR Codes)JUnit 5(tests unitaires)
Ce fichier PDF n'affichais seulement le QRcode avec le titre, le texte ainsi que son lien inscrit en dessous sans personnalisation comme pourront montrer les autres prototypes
Ce fichier PDF affichais la base de la personnalisation et de l'ajout d'image sans pour autant pouvoir personnalisé celle-ci
Ce fichier PDF pouvais maintenant avoir une image mise à différents endroits (Droite, Centre, Gauche), il etait aussi possible de changer la taille du QRCode et de l'image
Ces fichier PDF ont maintenant les sauvegardes de profil et personnalisation avec un choix si la personnalisation doit faire parti de la sauvegarde ou non.