Facturae y TicketBAI: QR Unicode con Caracteres Euskera y Catalán

En el entorno empresarial español, la generación de códigos de barras con caracteres no ASCII es un requisito habitual. El estándar Facturae —el formato XML de factura electrónica para el sector público español y proveedores de la administración que utilizan FACe— incluye campos de nombre de proveedor y comprador que pueden contener caracteres propios del catalán (Societat Limitada, Generalitat de Catalunya), el euskera (para empresas sujetas a TicketBAI en Bizkaia, Gipuzkoa y Araba) o el gallego. Codificar incorrectamente estos nombres en el código de barras adjunto al documento puede provocar errores de validación en los sistemas de la AEAT o en las plataformas de contratación pública.

IronBarcode permite a los desarrolladores soportar la escritura de caracteres Unicode para generadores y escritores de códigos de barras. Esta conveniencia permite a los desarrolladores escribir en múltiples idiomas, haciendo posible que productos con etiquetas tanto en Japón como en Egipto usen el mismo código de barras. También elimina la necesidad de convertir el texto a ASCII u otro formato con pérdida, agilizando el proceso eficientemente y eliminando pasos innecesarios.

Algunos de los idiomas más comunes que se utilizan en Unicode son:

  • Hindi
  • Chino (muchas variantes)
  • Árabe
  • Japonés
  • Tailandés

El primer paso para crear un código de barras Unicode con IronBarcode es definir el valor de cadena que deseas que el código de barras tenga. En este ejemplo, estamos usando una mezcla de inglés, chino y árabe como una sola cadena para demostrar la flexibilidad de IronBarcode.

El segundo paso es crear una instancia de BarcodeWriter, luego llamar al método CreateBarcode para ingresar la cadena definida en el primer paso y el tipo de código de barras. Tenga en cuenta que para crear un código de barras Unicode, solo se permiten ciertos tipos de codificación de códigos de barras. Los formatos recomendados son BarcodeWriterEncoding.DataMatrix, BarcodeWriterEncoding.PDF417, y BarcodeWriterEncoding.QRCode como se muestra arriba. Los códigos de barras lineales, como Code 128 y Code 39, no soportan Unicode y están limitados a ASCII, lo que requiere adaptaciones.

El tercer y último paso es guardar el código de barras como JPEG llamando a SaveAsImage con el nombre de archivo deseado como parámetro. En este caso, sería Unicode.jpeg.

Generación de códigos QR con caracteres Unicode para Facturae y TicketBAI

En la práctica española, la necesidad de Unicode surge especialmente en tres escenarios normativos:

1. Facturae y FACe (sector público): El formato Facturae permite nombres de empresa con caracteres no ASCII. Un proveedor catalán como Distribucions Açó, S.L. o un organismo de la Generalitat de Catalunya puede aparecer en el campo <SellerParty> del XML. El código de barras o QR adjunto a la factura física debe codificar fielmente estos nombres con BarcodeWriterEncoding.QRCode o BarcodeWriterEncoding.PDF417 para evitar discrepancias en la validación.

2. TicketBAI en euskera (Bizkaia, Gipuzkoa, Araba): Los recibos emitidos bajo TicketBAI en el País Vasco pueden incluir denominaciones sociales en euskera que contienen caracteres como ñ, ü o ç. Por ejemplo, una empresa llamada Berriztapen Teknologikoak, S.L. debe ser codificada sin alteración en el QR del recibo. IronBarcode gestiona esta codificación de forma transparente con BarcodeWriterEncoding.QRCode.

3. Nombres de empresa con caracteres especiales para la AEAT: El sistema VeriFactu encadena registros de facturas en los que el nombre del emisor forma parte del hash. Si el nombre se trunca o se pierde la codificación original, el hash resultante no coincidirá con el de la AEAT, generando errores en la conciliación. Utilizar IronBarcode con Unicode garantiza que el campo de nombre se codifica exactamente igual que en el XML de VeriFactu.

El siguiente fragmento ilustra la generación de un QR con el nombre de una empresa vasca con caracteres especiales:

string nombreEmpresa = "Berriztapen Teknologikoak, S.L. — Ñoño & Çà";
var qrCode = BarcodeWriter.CreateBarcode(nombreEmpresa, BarcodeWriterEncoding.QRCode);
qrCode.SaveAsImage("ticketbai_empresa.jpeg");
string nombreEmpresa = "Berriztapen Teknologikoak, S.L. — Ñoño & Çà";
var qrCode = BarcodeWriter.CreateBarcode(nombreEmpresa, BarcodeWriterEncoding.QRCode);
qrCode.SaveAsImage("ticketbai_empresa.jpeg");
Imports ZXing

Dim nombreEmpresa As String = "Berriztapen Teknologikoak, S.L. — Ñoño & Çà"
Dim qrCode = BarcodeWriter.CreateBarcode(nombreEmpresa, BarcodeWriterEncoding.QRCode)
qrCode.SaveAsImage("ticketbai_empresa.jpeg")
$vbLabelText   $csharpLabel

Este enfoque es directamente aplicable a cualquier flujo de trabajo de Facturae, TicketBAI o AEAT donde los nombres de empresa o producto contengan caracteres del español, catalán, euskera o gallego.

¿Listo para empezar?
Nuget Descargas 2,240,258 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package BarCode
ejecuta una muestra observa cómo tu cadena se convierte en un código de barras.