Bonjour,

Mon programme crée un document PDF contenant deux boutons radios, un bouton vérification et une cellule vide.

Nom : imgPDF.png
Affichages : 73
Taille : 7,6 Ko

Je voudrais, lorsque j'appuie sur le bouton de vérification, que le programme modifie l'aspect de la cellule à droite (la bordure, la couleur de texte et la couleur de fond) ainsi que le texte.

Pour être plus précis, quand un des bouton radio est coché, je voudrais que la dernière cellule soit avec un bord vert, un fond vert, un texte vert et le texte "Valide"
et quand aucun bouton radio n'est coché, je voudrais que la dernière cellule soit avec un bord rouge un fond rouge, un texte rouge et le texte "Non valide"

La partie à modifier doit être dans le javascript de mon setAdditionalActions

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String javas =
				"app.alert(getTexte(this.getField(\'ecouteur\').value));"+	
				"function getTexte(a) {"+
					"let result;"+
					"if (a === \'Off\') "+
						"{"+
						"result = \'formulaire non valide\';"+
						mettre la cellule avec le bon texte et le bon format 
						"}"+
					"else "+
						"{" +
						"result=\' formulaire valide \' + a ;"+
						mettre la cellule avec le bon texte et le bon format 
						"}" + 
					"return result;}";
Ci-joint le programme entier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
 
 
import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
 
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.GrayColor;
import com.itextpdf.text.pdf.PdfAction;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfFormField;
import com.itextpdf.text.pdf.PdfName;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPCellEvent;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.PushbuttonField;
import com.itextpdf.text.pdf.RadioCheckField;
 
public class principale {
	private static String fichier = "C:\\.......\\essai.pdf";
	private static File fileFichier = new File(fichier);
 
	private static Document monDocument;
	public static PdfWriter monWriter;
 
	private static PdfFormField radioGroupe;
 
	public static void main(String[] args) 
		{		
		if (fileFichier.exists()) fileFichier.delete();
 
		// --------- creation du PDF ------------------
		monDocument = new Document(PageSize.A4);
		monDocument.setMargins(10, 10, 20, 20); 
		try {monWriter = PdfWriter.getInstance(monDocument, new FileOutputStream(fileFichier));} 
		catch (IOException e) {e.printStackTrace();}
		catch (DocumentException e) {e.printStackTrace();}
		monDocument.open();
 
		// ----------- creation radioGroupe ------------
		radioGroupe = PdfFormField.createRadioButton(monWriter, true);
		radioGroupe.setFieldName("ecouteur");
 
		// ------- creation table ---------------
		PdfPTable tableTotal = new PdfPTable(new float[] {25,25,25,25});
		tableTotal.setWidthPercentage(100);
			// bouton radio 1
		PdfPCell boutonRadion1 = new PdfPCell();
		boutonRadion1.setFixedHeight(40);
		boutonRadion1.setBorder(PdfPCell.NO_BORDER);
		boutonRadion1.setCellEvent(new myCellRadio("01",radioGroupe ));
		tableTotal.addCell(boutonRadion1);	
 
			// bouton radio 2
		PdfPCell boutonRadion2 = new PdfPCell();
		boutonRadion2.setFixedHeight(40);
		boutonRadion2.setBorder(PdfPCell.NO_BORDER);
		boutonRadion2.setCellEvent(new myCellRadio("02",radioGroupe ));
		tableTotal.addCell(boutonRadion2);
 
			// bouton 
		PdfPCell cellBouton = new PdfPCell();
		cellBouton.setFixedHeight(40);
		cellBouton.setCellEvent(new myCellButton("btVerif"));
		tableTotal.addCell(cellBouton);
			// reponse
 
		Font font = FontFactory.getFont(null,22, Font.NORMAL, new BaseColor(0,0, 0));
		PdfPCell cellReponse = new PdfPCell();
		cellReponse.setFixedHeight(40);
 
 
 
		cellReponse.setPhrase(new Phrase("-",font));
		cellReponse.setBackgroundColor(new BaseColor(128,128,128));
		tableTotal.addCell(cellReponse);
 
 
		// --------- ajout de la table et writer-------
		try 
		{
		tableTotal.setSpacingAfter(20);
		monDocument.add(tableTotal);
		} 
		catch (DocumentException e) {e.printStackTrace();}
		monWriter.addAnnotation(radioGroupe);
 
		// ------------ enregidtrement et ouverture ---
		monDocument.close();    
		Desktop desktop = Desktop.getDesktop ();  
		try {desktop.open (fileFichier);} 
			catch (Exception e) { e.printStackTrace ();} 
	}
}
 
 
class myCellButton implements PdfPCellEvent 
{
	private static  String fieldName; 
 
	public myCellButton(String nameField){ fieldName = nameField;}
	public void cellLayout(PdfPCell arg0, com.itextpdf.text.Rectangle rectangle, PdfContentByte[] arg2) {
 
		try
		{
		PushbuttonField  button = new PushbuttonField(principale.monWriter,rectangle,"Buttons");
		button.setText("valider");
		PdfFormField field = button.getField();
 
 
		String javas =
				"app.alert(getTexte(this.getField(\'ecouteur\').value));"+	
				"function getTexte(a) {"+
					"let result;"+
					"if (a === \'Off\') "+
						"{"+
						"result = \'formulaire non valide\';"+
 
						"}"+
					"else "+
						"{" +
						"result=\' formulaire valide \' + a ;"+
 
						"}" + 
					"return result;}";
 
 
		//"this.cellReponse.fillColor = color.red;"+
 
        field.setAdditionalActions(PdfName.U,PdfAction.javaScript(javas,principale.monWriter));
		principale.monWriter.addAnnotation(field);
		} 
		catch (IOException e) {e.printStackTrace();} 
		catch (DocumentException e) {e.printStackTrace();}
	}
 
}
 
class myCellRadio implements PdfPCellEvent
{
	protected String monFieldName; 
	private PdfFormField monGroupe;
 
	public myCellRadio(String fielName, PdfFormField groupe)
	{
		this.monFieldName = fielName;
		this.monGroupe = groupe;	
	}
	public void cellLayout(PdfPCell cell, com.itextpdf.text.Rectangle rectangle, PdfContentByte[] canvases) 
	{
		final RadioCheckField btRadio = new RadioCheckField(principale.monWriter, rectangle,null,monFieldName);
		btRadio.setBorderColor(new BaseColor(0,0,0));
		btRadio.setBorderWidth(1);
		btRadio.setBackgroundColor(GrayColor.WHITE);
		btRadio.setCheckType(RadioCheckField.TYPE_CIRCLE); 
 
		try {
			final PdfFormField field = btRadio.getRadioField();
			monGroupe.addKid(field);
			principale.monWriter.addAnnotation(field);
			} 
		catch (IOException e) {e.printStackTrace();} 
		catch (DocumentException e) {e.printStackTrace();}
	}
}

J'ai fait beaucoup de recherches (peut-être pas aux bons endroits) mais je n'ai pas trouvé la solution.
Merci d'avance pour votre aide.