Ajustes/correcciones 17/4/2026 de la APP de TPV

1. La APP usa UTF8 en la impresión del Tiquet.

La Solución en Vue (Javascript)

Para que Vue no corrompa el binario, no puedes usar strings. Debes manejar los datos como un Uint8Array. Aquí tienes cómo debes hacer la conversión en tu frontend:

JavaScript

// Supongamos que 'base64Data' es el string que recibes de PHP
const base64Data = "PT09PT09..."; // El que me pasaste

// 1. Decodificar base64 a un string de bytes "crudos"
const binaryString = window.atob(base64Data);

// 2. ¡ESTE ES EL PASO CRUCIAL!
// Crear un array de bytes reales (8 bits sin signo)
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
    bytes[i] = binaryString.charCodeAt(i);
}

// 3. Enviar a la impresora o guardar el archivo
// Si usas un Blob para descargar el fichero de test:
const blob = new Blob([bytes], { type: 'application/octet-stream' });

// Si usas un plugin de impresión, asegúrate de pasarle el 'bytes.buffer'
// o el 'Uint8Array', NUNCA el string decodificado.

¿Por qué fallaba Vue?

Si estabas haciendo algo como const data = atob(base64Data), Javascript crea un string donde el byte 148 se interpreta como un carácter especial. Al enviarlo a la impresora (que espera bytes puros), el sistema operativo o el navegador dicen: "Este carácter no existe en ASCII, toma un signo de interrogación (?)".

2. Menú minimizado para la Certificación del programa en la Agencia Tributaria Portuguesa.

3. Clientes.

11. Base de datos de Certificación.

12. Auditoría de Certificación.