Formularios PDF.md
1 ### Objetivo 2 3 Tener un selector de normas y un selector de nivel de evaluación/componentes adicionales con selección múltiple. Se puede editar y guardar los datos siempre que se modifiquen desde Adobe Reader. 4 ![[Pasted image 20250113112556.png]] 5 6 ### Requisitos 7 - Adobe Acrobat PRO. 8 - PDF al que añadir el formulario. 9 10 ### Pasos 11 12 1. Cargar PDF en Adobe. 13 2. Utilizamos la herramienta de "Preparar Formulario". 14 15 #### Campos Scope_producto y Componentes_producto 16 17 1. Creamos estos dos campos de manera normal, no necesitan ningún ajuste. 18 #### Campo Norm_producto 19 20 1. Creamos el menú desplegable y añadimos los posibles valores de manera normal. 21 2. En sus opciones, en la sección de validaciones. 22 3. Añadimos el siguiente fragmento Javascript. 23 ```javascript 24 var scope = this.getField("Scope_producto"); 25 var components = this.getField("Componentes_producto"); 26 27 switch (event.value) { 28 case "Common Criteria version 3.1 release 5": 29 scope.setItems([ 30 "EAL1", "EAL2", //etc 31 ]); 32 components.setItems(["-", 33 "aco_cor.1", 34 "aco_dev.1", 35 // etc 36 ]); 37 break; 38 39 // añadimos para cada norma sus alcances y componentes adicionales repitiendo el código anterior. 40 41 default: 42 scope.setItems([]); 43 components.setItems([]); 44 ``` 45 46 6. Exportar PDF y probar. 47 48 #### Campo Resumen_producto 49 50 Este campo extra mostrará el resultado si fuese de interés. Es completamente opcional. 51 52 1. Creamos el campo de texto. 53 2. En opciones seleccionamos multilínea. 54 3. Añadimos en opciones el siguiente javascript durante la acción "Ratón dentro" 55 56 ```javascript 57 var summary = [ 58 this.getField("Norm_producto").value, 59 this.getField("Scope_producto").value 60 ]; 61 62 var components = this.getField("Componentes_producto").value; 63 if (components && components !== "-") { 64 summary.push(Array.isArray(components) ? components.join(", ") : components); 65 } 66 67 this.getField("Resumen_producto").value = summary.join(", "); 68 ``` 69 70 Cada vez que pasemos el ratón sobre ese campo, la acción actualizará su contenido con los campos ya seleccionados.