Ir al contenido
getnextpdf.com

Pro edición

Códigos de barras — Referencia detallada

La superficie de códigos de barras de NextPDF Pro añade simbologías 2D especializadas y de cadena de suministro sobre el módulo de códigos de barras de Core. Incluye seis codificadores 2D resueltos por registro (Micro QR, DotCode, Han Xin Code, JabCode, rMQR, GS1 DataBar), un codificador de componente 2D GS1 Composite (CC-C), el codificador 1D USPS Intelligent Mail y un analizador de identificadores de aplicación GS1 más un validador de cadena de suministro. La codificación es determinista: la misma carga útil y las mismas opciones producen siempre una matriz de módulos idéntica. Esta página detalla la API pública, el contrato de comportamiento, los modos de fallo y la evidencia de conformidad por simbología.

Esta capacidad se incluye en NextPDF Pro (nextpdf/pro) y se activa con un sobre de licencia de nivel Pro. Un despliegue sin ese derecho no carga las clases de la capacidad. Compare ediciones y obtenga una licencia.

Ventana de terminal
composer require nextpdf/pro:^3

Cada simbología vincula su propio nombre de capacidad en el sobre de licencia: barcode.microqr, barcode.dotcode, barcode.hanxin, barcode.jabcode, barcode.rmqr, barcode.gs1databar y barcode.gs1-composite-cc-c. Cuando una capacidad no está licenciada, el registro no resuelve ese codificador. La codificación de símbolo completo GS1 Composite CC-A y CC-B no es compatible (véase la tabla de estado de soporte), por lo que no se registra ninguna clave barcode.gs1-composite-cc-a ni barcode.gs1-composite-cc-b.

Las claves de registro provienen de los valores de caso de NextPDF\Barcode\Barcode2DType de Core más la clave literal gs1-composite-cc-c. Para los codificadores resueltos por registro, la clave de registro es el contrato estable, no el FQCN del codificador.

SímboloParámetrosComportamiento por defectoDevuelveLanza o falla conNotas
BarcodeProServiceProvider::register()BarcodeEncoderRegistry $registryVincula las siete claves de registro de ProvoidEstático; idempotente: una segunda llamada reemplaza la primera vinculación
MicroQrEncoder::encode()$data; opciones ecLevel ('L', 'M', 'Q'; por defecto 'L'), version (1–4 o null), mask (0–3 o null)Selecciona automáticamente la versión más pequeña que ajusta M1–M4Barcode2DDataInvalidArgumentExceptionEl 'H' no compatible se convierte SILENCIOSAMENTE a 'L' (quienes necesiten selección de EC a prueba de fallos deben prevalidar); M1 ignora ecLevel
DotCodeEncoder::encode()$data; opciones gs1 (bool, por defecto false), columns (int), rows (int), ratio (float, por defecto 1.5)Dimensionado automático de rejilla a 1.5 ancho:altoBarcode2DDataInvalidArgumentExceptionLas dimensiones de la rejilla pueden forzarse por eje
HanXinEncoder::encode()$data; opciones ecLevel (0–3, por defecto 1), version (1–84, por defecto automática)Versión más pequeña que ajustaBarcode2DDataInvalidArgumentExceptionModos de texto GB 2312 Región 1/2 según ISO/IEC 20830
JabCodeEncoder::encode()$data; opciones colors (4, 8, 16, 32, 64, 128, 256; por defecto 8), eccLevel (0–10, por defecto 3), symbolNumber (1–61, por defecto 1), symbolVersions, symbolPositions, symbolEccLevelsSímbolo único de 8 coloresBarcodeColorDataInvalidArgumentException, JabCodeEncodingExceptionMatriz de módulos policroma con paleta
RmqrEncoder::encode()$data; opciones ecLevel (RmqrConstants::EC_M por defecto, o EC_H), version (p. ej. 'R7x43', por defecto automática)La más pequeña que ajusta de las 32 versiones ISO/IEC 23941Barcode2DDataInvalidArgumentExceptionRechaza cargas útiles que exceden la capacidad; nunca trunca
Gs1DataBarEncoder::encode()$data; opciones variant (Gs1DataBarVariant, por defecto OMNIDIRECTIONAL), linkage (bool, por defecto false), height (int, por defecto el mínimo de la variante; por fila para Expanded Stacked), segmentsPerRow (int, por defecto 4; solo Expanded Stacked)Codifica una entrada GTIN (familia §5/§6) o una cadena de elementos de IA GS1 (familia §7)Barcode2DDataInvalidArgumentException; InvalidSymbolStructureExceptionSe codifican las siete variantes del Anexo J de ISO/IEC 24724
Gs1DataBarVariantisImplemented() devuelve true para los siete casosenum (7 casos)minimumHeightX() y defaultHeightX() según el Anexo J
ImbEncoder::encode()string $code (20, 25, 29 o 31 dígitos)65 barras de cuatro estadosBarcodeDataInvalidArgumentExceptionInterfaz de codificador 1D; no es una clave de registro 2D
ImbEncoder::encodeToString()string $codeEstados de barra como cadena T/A/D/FstringInvalidArgumentExceptionPara comprobaciones contra vectores de referencia de USPS
Gs1DataParser::parse()string $dataDetecta automáticamente URIs de Digital Link, si no formato (AI)valueGs1ParsedDataInvalidArgumentExceptionImplementa el contrato Gs1DataParserInterface de Core
Gs1DataParser::parseDigitalLink()string $uriAnaliza una URI de GS1 Digital LinkGs1ParsedDataInvalidArgumentException
Gs1DataParser::encodeForCode128() / ::encodeForQrCode() / ::encodeForDataMatrix()object $parsedSecuencia de bytes del portador con la convención FNC1 de ese portadorstringEspera una instancia Gs1ParsedData
Gs1DataParser::validateAI()string $ai, string $valueComprobación estructural del valor de una IAbool
Gs1Validator::validate()string $barcodeData, Gs1SupplyChainProfile $profile (por defecto NONE)Ruta rápida estática sobre run()Gs1ValidationResultLos fallos de análisis se convierten en hallazgos, no en excepciones
Gs1Validator::run()como validate()Análisis, dígitos de control, fechas, reglas entre IA, perfilGs1ValidationResultRuta de instancia; el constructor acepta un analizador inyectado
Gs1SupplyChainProfileNONE omite las reglas de perfilenum (5 casos)RETAIL, FOOD, PHARMA, LOGISTICS, NONE; requiredAIs(), recommendedAIs(), primaryIdentifiers()
Gs1ValidationResultHallazgos particionados por severidad en la construcciónclase readonlyisValid, findings, errors, warnings, infos, parsedData; passes(), fails(), totalFindings()
Gs1ValidationFinding / Gs1FindingSeverityseverity, ruleId, message, ai y suggestion opcionalesclase readonly / enumSeveridades: Error, Warning, Info
CompositeComponentA::codewordsFor()string $dataEncodación de cadena binaria de propósito general §5, conversión base-928, autocomprobación de ida y vueltalist<int> (cada uno 0–927)InvalidArgumentExceptionAlimenta linkFor() o un renderizador de portador CC-A externo
CompositeComponentA::encode()ignoradoRechaza el renderizado de símbolo completo CC-AUnsupportedBarcodeFeature (siempre)A prueba de fallos; véase Casos límite
CompositeComponentB::encode()ignoradoRechaza la codificación 2D de CC-BUnsupportedBarcodeFeature (siempre)linkFor() sigue disponible (CCSI 901)
CompositeComponentC::encode()$data; opciones reenviadas al portador PDF417; carrierType (por defecto GS1_128)Portador PDF417 completo con la palabra de código CCSI 920 al inicioBarcode2DDataBarcodeException; CompositeLinkageExceptionSolo el portador GS1_128 es admisible
CompositeComponent{A,B,C}::linkFor()string $carrierId, array $codewords, CompositeCarrierType $carrierTypeEmpareja las palabras de código del componente con un portador 1DCompositeLinkageCompositeLinkageExceptionAplica la admisibilidad y la capacidad del portador
CompositeVariant / CompositeCarrierTypeCC_A, CC_B, CC_C; GS1_DATABAR, GS1_128enumsmaxCodewords(), ccsi(), allowedCarriers(), usesFullPdf417()
public static function register(BarcodeEncoderRegistry $registry): void
public function encode(string $data, array $options = []): Barcode2DData
public static function validate(
string $barcodeData,
Gs1SupplyChainProfile $profile = Gs1SupplyChainProfile::NONE,
): Gs1ValidationResult
public function run(
string $barcodeData,
Gs1SupplyChainProfile $profile = Gs1SupplyChainProfile::NONE,
): Gs1ValidationResult
public function parse(string $data): Gs1ParsedData
public function parseDigitalLink(string $uri): Gs1ParsedData
public function encodeForCode128(object $parsed): string
public function encodeForQrCode(object $parsed): string
public function encodeForDataMatrix(object $parsed): string
public function validateAI(string $ai, string $value): bool
public function codewordsFor(string $data): array

La fábrica de registro por defecto de Core previncula los codificadores de Pro como entradas perezosas y con licencia por capacidad. BarcodeProServiceProvider::register() es el recurso de reserva admitido para aplicaciones que componen un registro sin valores por defecto, por ejemplo integraciones de framework con su propio contenedor. Cada codificador convierte una carga útil de cadena y opciones por simbología en un objeto de datos de código de barras que el renderizador de página transforma en operadores de contenido PDF.

Gs1DataParser acepta cadenas de IA legibles por humanos ((01)09521234543213(17)260131) y URIs de GS1 Digital Link. Produce secuencias de bytes codificadas para los portadores GS1-128, QR Code y Data Matrix, aplicando la convención de FNC1 y separador de grupo de cada portador. Gs1Validator ejecuta una canalización de cinco pasos: análisis, dígitos de control (GTIN, SSCC), lógica de fechas, reglas entre IA e IA obligatorias del perfil de industria. Un fallo de análisis produce un resultado no válido que porta hallazgos; no lanza. Los hallazgos se particionan por severidad en errores, advertencias e informativos.

Gs1DataBarEncoder::encode() despacha las siete variantes del Anexo J de ISO/IEC 24724:2011 a través de un único contrato de opciones. Omnidirectional, Truncated, Stacked y Stacked Omnidirectional comparten el álgebra de anchura de elemento del §5 con un carácter de control mod-79. Limited usa su propia álgebra de carácter de símbolo del §6 con un carácter de control mod-89. Expanded y Expanded Stacked usan el álgebra (17,4) del §7: la máquina de estados de compactación de tres modos (numérico, alfanumérico e ISO/IEC 646) del §7.2.5.5 más un carácter de control mod-211 (§7.2.6). La familia §5/§6 toma un GTIN-14 de 14 dígitos con dígito de control mod-10 o una identificación de artículo de 13 dígitos. La familia §7 toma una cadena de elementos de IA GS1 en bruto (dígitos, letras, el subconjunto de puntuación ISO/IEC 646, FNC1 como byte 0x1D). La opción linkage establece el indicador de enlace de componente 2D para su uso como componente lineal de un símbolo GS1 Composite.

CC-C produce un componente extendido 2D completo sobre el portador PDF417 completo, inyectando la palabra de código CCSI obligatoria 920 como la palabra de código de datos inicial (ISO/IEC 24723:2010 §5.4). CC-A genera palabras de código de datos base-928 conformes mediante codewordsFor(), con una autocomprobación de ida y vuelta codificar-decodificar a prueba de fallos, pero rechaza el renderizado de símbolo completo. CC-B rechaza por completo la codificación 2D. linkFor() empareja las palabras de código del componente con un portador 1D como un valor CompositeLinkage, aplicando la admisibilidad y la capacidad del portador.

  • Todo codificador rechaza una carga útil vacía con InvalidArgumentException.
  • Micro QR: solicitar el nivel de corrección de errores H no compatible se convierte SILENCIOSAMENTE a L en lugar de fallar (prevalide las opciones si requiere una selección de EC a prueba de fallos), porque ISO/IEC 18004 define solo L, M y Q para los símbolos Micro QR.
  • rMQR: el nivel de corrección de errores debe ser M o H; una carga útil que excede la capacidad de las 32 versiones se rechaza, nunca se trunca.
  • JabCode: un recuento de colores fuera del conjunto de potencias de dos admitido, un nivel de ECC fuera de 0–10 o un recuento de símbolos fuera de 1–61 se rechaza; los fallos de codificación posteriores lanzan JabCodeEncodingException.
  • GS1 DataBar: la familia §5/§6 valida el dígito de control mod-10 del GTIN, y Limited restringe el dígito indicador a 0 o 1. La familia §7 rechaza los caracteres no codificables y los separadores FNC1 finales o duplicados. Expanded Stacked rechaza un recuento impar de caracteres de símbolo por fila y las alturas por fila por debajo del mínimo de 34X. Las autocomprobaciones de estructura interna fallan con InvalidSymbolStructureException en lugar de emitir un símbolo malformado.
  • GS1 Composite: los encode() de CC-A y CC-B siempre lanzan UnsupportedBarcodeFeature (a prueba de fallos). CC-C lanza BarcodeException con datos vacíos o desbordamiento de capacidad de PDF417 (más de 925 palabras de código), y CompositeLinkageException para un portador inadmisible.
  • La validación GS1 marca la estructura de IA malformada y los dígitos de control incorrectos antes de codificar; una cadena de cadena de suministro no válida nunca produce un símbolo conforme escaneable.
  • IMB acepta únicamente entradas de 20, 25, 29 o 31 dígitos.
  • La codificación de códigos de barras no realiza criptografía. No hay comportamiento específico del modo FIPS; los codificadores se ejecutan de forma idéntica con independencia del perfil FIPS.

NextPDF implementa estas simbologías conforme a las normas publicadas citadas a continuación y fija trazas de referencia en su conjunto de pruebas. Las afirmaciones de esta página son declaraciones de capacidad: el soporte no es conformidad y la conformidad no es certificación. NextPDF no posee ninguna certificación de simbología. Los anclajes de cláusula están parafraseados a partir del código fuente del producto y sus fixtures de conformidad; el corpus del compliance-engine no cubre las normas de simbología de códigos de barras, por lo que los anclajes siguientes están fundamentados en el producto sin identificadores de referencia.

SuperficieNormaAnclaje de cláusula (parafraseado)
Álgebra de anchura de elemento de GS1 DataBarISO/IEC 24724:2011§5.2 estructura de carácter de símbolo; Anexo F.1 ejemplo resuelto (Omnidirectional); Anexo F.2 (Limited); Anexo F.3 (Expanded)
Disposiciones apiladas de GS1 DataBarISO/IEC 24724:2011§5.4 Stacked; §5.5 Stacked Omnidirectional; §7.2.8 partición de filas y separadores de Expanded Stacked
Encodación Expanded de GS1 DataBarISO/IEC 24724:2011§7.2.5.5 máquina de estados de compactación de tres modos; §7.2.6 carácter de control mod-211
Enlace GS1 Composite y CC-CISO/IEC 24723:2010§5.4 semántica de la palabra de código CCSI; §5.1 admisibilidad del portador
Palabras de código GS1 Composite CC-AISO/IEC 24723:2010§5 encodación de cadena binaria de propósito general con conversión base-928
Estructura de símbolo rMQRISO/IEC 23941:2022§6.3.2 Tabla 1 dimensiones de versión; §7.8.2 máscara fija; Anexo C / Anexo I referencia de información de formato
Micro QRISO/IEC 18004Capacidad e información de formato de Micro QR M1–M4
Han Xin CodeISO/IEC 20830:2021Estructura de símbolo; patrones de localización y alineación; modos GB 2312 Región 1/2; ECC Reed–Solomon; enmascaramiento
JabCodeISO/IEC 23634Estructura de símbolo, color y ECC
Simbología postalUSPS-B-3200Estructura de campo de Intelligent Mail Barcode

Una variante está Verificada cuando un fixture bajo pro/tests/** la ejercita, preferiblemente una traza de referencia fijada a un ejemplo resuelto publicado. Una variante distribuida sin fixture dedicado permanece Declarada. Una variante sin codificador es No compatible.

Simbología / varianteEstadoEvidencia (ruta de prueba)Notas
Micro QR (M1–M4)Verificadapro/tests/Unit/Barcode/MicroQrEncoderTest.phpA nivel unitario; un fixture de traza de referencia con ejemplo resuelto es una tarea de relleno registrada
DotCodeVerificadapro/tests/Unit/Barcode/DotCodeEncoderTest.php; DotCodeGfArithmeticTest.phpAritmética de campo de Galois cubierta; sin ida y vuelta con decodificador de terceros
Han Xin CodeVerificadapro/tests/Unit/Barcode/HanXinEncoderTest.php; HanXinRsEncodingTest.phpRuta de codificación Reed–Solomon ejercitada explícitamente
JabCode (1–61 símbolos, 4–256 colores, ECC 0–10)Verificadapro/tests/Unit/Barcode/JabCode/JabCodeEncoderTest.php (+ 11 suites de componentes en el mismo directorio)Cascada multisímbolo y rango de ECC ejercitados; sin ida y vuelta con decodificador de terceros
USPS Intelligent Mail BarcodeVerificadapro/tests/Unit/Barcode/ImbEncoderTest.php; ImbRoutingCodeTest.phpValidación de código de enrutamiento y longitud de 20/25/29/31 dígitos ejercitada
rMQR — las 32 versiones ISO/IEC 23941Verificadapro/tests/Conformance/Barcode/Rmqr/AnnexValidatedSizesTest.php; RmqrAnnexCFormatInfoTest.php; pro/tests/Unit/Barcode/Rmqr/RmqrEncoderTest.phpPares de versión y EC comprobados contra la Tabla 1 de ISO/IEC 23941; valores de referencia de información de formato del Anexo C / Anexo I
GS1 DataBar — Omnidirectional / TruncatedVerificadapro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarReferenceTest.phpByte a byte igual al ejemplo resuelto del Anexo F.1; Truncated comparte la codificación con altura reducida
GS1 DataBar — Stacked / Stacked OmnidirectionalVerificadapro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarStackedReferenceTest.phpDivisión de filas derivada de la traza del Anexo F.1; construcción de separadores según §5.4 y §5.5
GS1 DataBar — LimitedVerificadapro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarLimitedReferenceTest.php; pro/tests/Unit/Barcode/Gs1DataBar/Gs1DataBarLimitedEncoderTest.phpByte a byte igual al ejemplo resuelto del Anexo F.2 (artículo 00098765432105)
GS1 DataBar — ExpandedVerificadapro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarExpandedReferenceTest.php; pro/tests/Integration/Barcode/Gs1DataBarExpandedTwoDecoderTest.phpByte a byte igual al ejemplo resuelto del Anexo F.3 ((10)12A); ida y vuelta con decodificador independiente contra zxing-cpp y ZBar
GS1 DataBar — Expanded StackedVerificadapro/tests/Unit/Barcode/Gs1DataBar/Gs1DataBarExpandedEncoderTest.php (casos apilados); la ida y vuelta de integración anteriorMisma canalización de datos que Expanded de una fila; partición de filas y separadores del §7.2.8 verificados
GS1 Composite — CC-C (portador PDF417)Verificadapro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentCTest.php; CompositeRoundtripTest.php; CompositeLinkageTest.phpInteracción de la palabra de código CCSI 920 y el indicador de enlace cubierta
GS1 Composite — CC-AParcialpro/tests/Unit/Barcode/Gs1Composite/CompositeComponentACodewordTest.php; pro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentATest.phpGeneración de palabras de código Verificada (base-928, autocomprobación de ida y vuelta); renderizado de símbolo completo no compatible: encode() falla a prueba de fallos
GS1 Composite — CC-BNo compatiblepro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentBTest.php (verifica el rechazo a prueba de fallos)Sin codificación 2D; el auxiliar de enlace (CCSI 901) sigue disponible
Analizador de IA GS1Verificadapro/tests/Unit/Barcode/Gs1DataParserTest.php; Gs1DataParserFnc1Test.phpAmbos formatos de entrada y las tres salidas de secuencia de bytes de portador ejercitados
Validador de cadena de suministro GS1Verificadapro/tests/Unit/Barcode/Gs1ValidatorTest.php; Gs1ValidatorCrossAiTest.php; pro/tests/Unit/Barcode/Gs1/Gs1ValidatorDateValidationEdgeCaseTest.phpDígitos de control, combinaciones obligatorias entre IA y lógica de fechas ejercitados
  • Los anclajes de evidencia de esta página son rutas de prueba bajo pro/tests/**; el repositorio no distribuye ningún directorio examples/ para este módulo.
  • Los siete nombres de capacidad enumerados en Disponibilidad y licencias son las claves que vincula el proveedor de servicio. El codificador IMB se construye directamente y no porta ninguna clave de registro.
  • CC-A emite únicamente el método de encodación de propósito general; los métodos comprimidos específicos de aplicación son un residuo de densidad documentado, no una carencia de corrección.

Esta página documenta únicamente el comportamiento observable externamente y la superficie de la API pública admitida. Las rutas de espacio de nombres internas, las clases auxiliares, las tablas de mecanismos, los nombres de archivo de runbook y los prefijos de ticket quedan fuera del alcance.