// estadoSelector.js // Mapeo de estados const abreviaturasEstados = { "01": "AGUASCALIENTE", "02": "BAJA CALIFORNIA", "03": "BAJA CALIFORNIA SUR", "04": "CAMPECHE", "05": "COAHUILA", "06": "COLIMA", "07": "CHIAPAS", "08": "CHIHUAHUA", "09": "CIUDAD DE MÉXICO", "10": "DURANGO", "E": "EXTRANJERO", "11": "GUANAJUATO", "12": "GUERRERO", "13": "HIDALGO", "14": "JALISCO", "15": "MÉXICO", "16": "MICHOACÁN DE OCAMPO", "17": "MORELOS", "18": "NAYARIT", "19": "NUEVO LEÓN", "20": "OAXACA", "21": "PUEBLA", "22": "QUERÉTARO", "23": "QUINTANA ROO", "24": "SAN LUIS POTOSÍ", "25": "SINALOA", "26": "SONORA", "27": "TABASCO", "28": "TAMAULIPAS", "29": "TLAXCALA", "30": "VERACRUZ", "31": "YUCATÁN", "32": "ZACATECAS" }; // Función para seleccionar automáticamente un estado basado en el "Identificador Electrónico" async function seleccionarEstadoDesdeIdentificador(file, listaId) { const identificadorElectronico = await extraerIdentificadorElectronico(file); const primerosDosDigitos = identificadorElectronico.substring(0, 2); let estado = abreviaturasEstados[primerosDosDigitos]; if (!estado) { estado = abreviaturasEstados['E']; // Si no se encuentra, asignar "E" } const lista = document.getElementById(listaId); for (let i = 0; i < lista.options.length; i++) { if (lista.options[i].text.toUpperCase() === estado.toUpperCase()) { lista.selectedIndex = i; break; } } } // Evento de cambio para el input de archivos document.getElementById('pdfInput').addEventListener('change', function() { if (this.files[0]) { seleccionarEstadoDesdeIdentificador(this.files[0], 'pdfList'); } }); document.getElementById('pdfInputQR').addEventListener('change', function() { if (this.files[0]) { seleccionarEstadoDesdeIdentificador(this.files[0], 'pdfListQR'); } }); async function extraerIdentificadorElectronico(file) { const pdfData = new Uint8Array(await file.arrayBuffer()); const pdf = await pdfjsLib.getDocument(pdfData).promise; const page = await pdf.getPage(1); const textContent = await page.getTextContent(); const texto = textContent.items.map(item => item.str).join(' '); // Log del texto extraído console.log("Texto extraído del PDF:", texto); const claveUnica = 'Identificador Electrónico'; const indiceInicio = texto.indexOf(claveUnica); if (indiceInicio !== -1) { // Intentar extraer el texto después del "Identificador Electrónico" const textoDespues = texto.substring(indiceInicio + claveUnica.length).trim(); let identificador = obtenerIdentificador(textoDespues); // Si no se encuentra un identificador válido hacia adelante, buscar hacia atrás if (!/^\d{20}$/.test(identificador)) { const textoAntes = texto.substring(0, indiceInicio).trim(); identificador = obtenerIdentificadorDeTextoAntes(textoAntes); } // Resaltar el texto del identificador en el log console.log(`Identificador Electrónico extraído: **${identificador}**`); return identificador; } else { return 'NO IDENTIFICADO'; } } function obtenerIdentificador(texto) { // Limpiar el texto eliminando espacios en blanco al principio const textoLimpio = texto.trim(); // Cortar el texto a los siguientes 20 caracteres return textoLimpio.substring(0, 20); } function obtenerIdentificadorDeTextoAntes(texto) { // Limpiar el texto eliminando espacios en blanco al final const textoLimpio = texto.trim(); // Obtener los últimos 20 caracteres return textoLimpio.substring(textoLimpio.length - 20); }