Przejdź do głównej zawartości
getnextpdf.com

Pro edycja

Barcode — pełna dokumentacja referencyjna

Powierzchnia kodów kreskowych NextPDF Pro dodaje specjalistyczne symboliki 2D i łańcucha dostaw na wierzchu modułu kodów kreskowych Core. Dostarcza sześć rozwiązywanych przez rejestr enkoderów 2D (Micro QR, DotCode, Han Xin Code, JabCode, rMQR, GS1 DataBar), jeden enkoder komponentu 2D GS1 Composite (CC-C), enkoder 1D USPS Intelligent Mail oraz parser identyfikatorów aplikacji (Application Identifier) GS1 wraz z walidatorem łańcucha dostaw. Kodowanie jest deterministyczne: ten sam ładunek i opcje zawsze dają identyczną macierz modułów. Ta strona opisuje publiczne API, kontrakt zachowania, tryby awarii oraz dowody konformancji dla poszczególnych symbolik.

Ta możliwość jest dostarczana w NextPDF Pro (nextpdf/pro) i aktywuje się wraz z kopertą licencyjną poziomu Pro. Wdrożenie bez tego uprawnienia nie ładuje klas tej możliwości. Porównaj edycje i uzyskaj licencję.

Okno terminala
composer require nextpdf/pro:^3

Każda symbolika wiąże własną nazwę możliwości w kopercie licencyjnej: barcode.microqr, barcode.dotcode, barcode.hanxin, barcode.jabcode, barcode.rmqr, barcode.gs1databar oraz barcode.gs1-composite-cc-c. Gdy możliwość nie jest licencjonowana, rejestr nie rozwiązuje tego enkodera. Kodowanie pełnosymbolowe GS1 Composite CC-A i CC-B nie jest obsługiwane (zobacz tabelę statusu wsparcia), więc nie jest rejestrowany żaden klucz barcode.gs1-composite-cc-a ani barcode.gs1-composite-cc-b.

Klucze rejestru pochodzą z wartości przypadków Core NextPDF\Barcode\Barcode2DType plus dosłowny klucz gs1-composite-cc-c. Dla enkoderów rozwiązywanych przez rejestr stabilnym kontraktem jest klucz rejestru, a nie FQCN enkodera.

SymbolParametryDomyślne zachowanieZwracaZgłasza lub zawodzi zUwagi
BarcodeProServiceProvider::register()BarcodeEncoderRegistry $registryWiąże wszystkie siedem kluczy rejestru ProvoidStatyczna; idempotentna — drugie wywołanie zastępuje pierwsze wiązanie
MicroQrEncoder::encode()$data; opcje ecLevel ('L', 'M', 'Q'; domyślnie 'L'), version (1–4 lub null), mask (0–3 lub null)Automatycznie wybiera najmniejszą pasującą wersję M1–M4Barcode2DDataInvalidArgumentExceptionNieobsługiwane 'H' MILCZĄCO sprowadza się do 'L' (wywołujący wymagający wyboru EC fail-closed muszą walidować wstępnie); M1 ignoruje ecLevel
DotCodeEncoder::encode()$data; opcje gs1 (bool, domyślnie false), columns (int), rows (int), ratio (float, domyślnie 1.5)Automatyczny dobór siatki przy proporcji szerokość:wysokość 1.5Barcode2DDataInvalidArgumentExceptionWymiary siatki mogą być wymuszone dla każdej osi
HanXinEncoder::encode()$data; opcje ecLevel (0–3, domyślnie 1), version (1–84, domyślnie auto)Najmniejsza pasująca wersjaBarcode2DDataInvalidArgumentExceptionTryby tekstowe GB 2312 Region 1/2 zgodnie z ISO/IEC 20830
JabCodeEncoder::encode()$data; opcje colors (4, 8, 16, 32, 64, 128, 256; domyślnie 8), eccLevel (0–10, domyślnie 3), symbolNumber (1–61, domyślnie 1), symbolVersions, symbolPositions, symbolEccLevelsPojedynczy symbol 8-kolorowyBarcodeColorDataInvalidArgumentException, JabCodeEncodingExceptionPolichromatyczna macierz modułów z paletą
RmqrEncoder::encode()$data; opcje ecLevel (RmqrConstants::EC_M domyślnie, lub EC_H), version (np. 'R7x43', domyślnie auto)Najmniejsza pasująca z 32 wersji ISO/IEC 23941Barcode2DDataInvalidArgumentExceptionOdrzuca ładunki przekraczające pojemność; nigdy nie obcina
Gs1DataBarEncoder::encode()$data; opcje variant (Gs1DataBarVariant, domyślnie OMNIDIRECTIONAL), linkage (bool, domyślnie false), height (int, domyślnie minimum wariantu; per-rząd dla Expanded Stacked), segmentsPerRow (int, domyślnie 4; tylko Expanded Stacked)Koduje wejście GTIN (rodzina §5/§6) lub ciąg elementów AI GS1 (rodzina §7)Barcode2DDataInvalidArgumentException; InvalidSymbolStructureExceptionKodują się wszystkie siedem wariantów ISO/IEC 24724 Annex J
Gs1DataBarVariantisImplemented() zwraca true dla wszystkich siedmiu przypadkówenum (7 przypadków)minimumHeightX() i defaultHeightX() zgodnie z Annex J
ImbEncoder::encode()string $code (20, 25, 29 lub 31 cyfr)65 czterostanowych kresekBarcodeDataInvalidArgumentExceptionInterfejs enkodera 1D; nie jest kluczem rejestru 2D
ImbEncoder::encodeToString()string $codeStany kresek jako ciąg T/A/D/FstringInvalidArgumentExceptionDo sprawdzania względem wektorów referencyjnych USPS
Gs1DataParser::parse()string $dataAutomatycznie wykrywa URI Digital Link, w przeciwnym razie format (AI)valueGs1ParsedDataInvalidArgumentExceptionImplementuje kontrakt Core Gs1DataParserInterface
Gs1DataParser::parseDigitalLink()string $uriParsuje URI GS1 Digital LinkGs1ParsedDataInvalidArgumentException
Gs1DataParser::encodeForCode128() / ::encodeForQrCode() / ::encodeForDataMatrix()object $parsedSekwencja bajtów nośnika z konwencją FNC1 danego nośnikastringOczekuje instancji Gs1ParsedData
Gs1DataParser::validateAI()string $ai, string $valueSprawdzenie strukturalne jednej wartości AIbool
Gs1Validator::validate()string $barcodeData, Gs1SupplyChainProfile $profile (domyślnie NONE)Statyczna szybka ścieżka nad run()Gs1ValidationResultBłędy parsowania stają się ustaleniami, nie wyjątkami
Gs1Validator::run()jak validate()Parsowanie, cyfry kontrolne, daty, reguły między-AI, profilGs1ValidationResultŚcieżka instancyjna; konstruktor przyjmuje wstrzyknięty parser
Gs1SupplyChainProfileNONE pomija reguły profiluenum (5 przypadków)RETAIL, FOOD, PHARMA, LOGISTICS, NONE; requiredAIs(), recommendedAIs(), primaryIdentifiers()
Gs1ValidationResultUstalenia podzielone według wagi w momencie konstrukcjiklasa readonlyisValid, findings, errors, warnings, infos, parsedData; passes(), fails(), totalFindings()
Gs1ValidationFinding / Gs1FindingSeverityseverity, ruleId, message, opcjonalne ai i suggestionklasa readonly / enumWagi: Error, Warning, Info
CompositeComponentA::codewordsFor()string $dataEnkodacja ciągu binarnego ogólnego przeznaczenia §5, konwersja base-928, samosprawdzenie round-triplist<int> (każdy 0–927)InvalidArgumentExceptionZasil linkFor() lub zewnętrzny renderer nośnika CC-A
CompositeComponentA::encode()ignorowaneOdmawia renderowania pełnosymbolowego CC-AUnsupportedBarcodeFeature (zawsze)Fail-closed; zobacz Przypadki brzegowe
CompositeComponentB::encode()ignorowaneOdmawia kodowania 2D CC-BUnsupportedBarcodeFeature (zawsze)linkFor() pozostaje dostępny (CCSI 901)
CompositeComponentC::encode()$data; opcje przekazywane do nośnika PDF417; carrierType (domyślnie GS1_128)Pełny nośnik PDF417 z prowadzącym słowem kodowym CCSI 920Barcode2DDataBarcodeException; CompositeLinkageExceptionDopuszczalny jest tylko nośnik GS1_128
CompositeComponent{A,B,C}::linkFor()string $carrierId, array $codewords, CompositeCarrierType $carrierTypeParuje słowa kodowe komponentu z nośnikiem 1DCompositeLinkageCompositeLinkageExceptionEgzekwuje dopuszczalność i pojemność nośnika
CompositeVariant / CompositeCarrierTypeCC_A, CC_B, CC_C; GS1_DATABAR, GS1_128enumymaxCodewords(), 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

Domyślna fabryka rejestru Core wstępnie wiąże enkodery Pro jako leniwe wpisy licencjonowane możliwościami. BarcodeProServiceProvider::register() to wspierane rozwiązanie awaryjne dla aplikacji, które komponują rejestr bez wartości domyślnych, na przykład integracji frameworkowych z własnym kontenerem. Każdy enkoder przekształca ładunek tekstowy oraz opcje danej symboliki w obiekt danych kodu kreskowego, który renderer strony zamienia na operatory zawartości PDF.

Gs1DataParser przyjmuje czytelne dla człowieka ciągi AI ((01)09521234543213(17)260131) oraz URI GS1 Digital Link. Wytwarza zakodowane sekwencje bajtów dla nośników GS1-128, QR Code i Data Matrix, stosując konwencję FNC1 i separatora grup danego nośnika. Gs1Validator uruchamia pięcioetapowy potok: parsowanie, cyfry kontrolne (GTIN, SSCC), logikę dat, reguły między-AI oraz obowiązkowe AI profilu branżowego. Błąd parsowania daje niepoprawny wynik niosący ustalenia; nie zgłasza wyjątku. Ustalenia dzielą się według wagi na błędy, ostrzeżenia i informacje.

Gs1DataBarEncoder::encode() rozdziela wszystkie siedem wariantów ISO/IEC 24724:2011 Annex J przez jeden kontrakt opcji. Omnidirectional, Truncated, Stacked i Stacked Omnidirectional współdzielą algebrę szerokości elementów §5 ze znakiem kontrolnym mod-79. Limited używa własnej algebry znaku symbolu §6 ze znakiem kontrolnym mod-89. Expanded i Expanded Stacked używają algebry §7 (17,4): trzytrybowej maszyny stanów kompaktowania numerycznego, alfanumerycznego i ISO/IEC 646 z §7.2.5.5 plus znak kontrolny mod-211 (§7.2.6). Rodzina §5/§6 przyjmuje 14-cyfrowy GTIN-14 z cyfrą kontrolną mod-10 lub 13-cyfrową identyfikację pozycji. Rodzina §7 przyjmuje surowy ciąg elementów AI GS1 (cyfry, litery, podzbiór interpunkcji ISO/IEC 646, FNC1 jako bajt 0x1D). Opcja linkage ustawia flagę powiązań komponentu 2D do użycia jako liniowy komponent symbolu GS1 Composite.

CC-C wytwarza kompletny rozszerzony komponent 2D na pełnym nośniku PDF417, wstrzykując obowiązkowe słowo kodowe CCSI 920 jako prowadzące słowo kodowe danych (ISO/IEC 24723:2010 §5.4). CC-A generuje zgodne słowa kodowe danych base-928 przez codewordsFor(), z samosprawdzeniem round-trip kodowanie-dekodowanie w trybie fail-closed, lecz odmawia renderowania pełnosymbolowego. CC-B całkowicie odmawia kodowania 2D. linkFor() paruje słowa kodowe komponentu z nośnikiem 1D jako wartość CompositeLinkage, egzekwując dopuszczalność i pojemność nośnika.

  • Każdy enkoder odrzuca pusty ładunek z InvalidArgumentException.
  • Micro QR: żądanie nieobsługiwanego poziomu korekcji błędów H MILCZĄCO sprowadza się do L zamiast zawieść (waliduj opcje wstępnie, jeśli wymagasz wyboru EC fail-closed), ponieważ ISO/IEC 18004 definiuje dla symboli Micro QR tylko L, M i Q.
  • rMQR: poziom korekcji błędów musi wynosić M lub H; ładunek przekraczający pojemność 32 wersji jest odrzucany, nigdy nie obcinany.
  • JabCode: liczba kolorów spoza obsługiwanego zbioru potęg dwójki, poziom ECC spoza 0–10 lub liczba symboli spoza 1–61 są odrzucane; dalsze błędy kodowania zgłaszają JabCodeEncodingException.
  • GS1 DataBar: rodzina §5/§6 waliduje cyfrę kontrolną GTIN mod-10, a Limited ogranicza cyfrę wskaźnika do 0 lub 1. Rodzina §7 odrzuca znaki niekodowalne oraz końcowe lub zdublowane separatory FNC1. Expanded Stacked odrzuca nieparzystą liczbę znaków symbolu na rząd oraz wysokości rzędów poniżej minimum 34X. Wewnętrzne samosprawdzenia struktury zawodzą z InvalidSymbolStructureException zamiast emitować zniekształcony symbol.
  • GS1 Composite: encode() CC-A i CC-B zawsze zgłasza UnsupportedBarcodeFeature (fail closed). CC-C zgłasza BarcodeException przy pustych danych lub przepełnieniu pojemności PDF417 (więcej niż 925 słów kodowych) oraz CompositeLinkageException dla niedopuszczalnego nośnika.
  • Walidacja GS1 oznacza zniekształconą strukturę AI i błędne cyfry kontrolne przed kodowaniem; niepoprawny ciąg łańcucha dostaw nigdy nie wytwarza skanowalnego zgodnego symbolu.
  • IMB przyjmuje tylko wejścia 20-, 25-, 29- lub 31-cyfrowe.
  • Kodowanie kodów kreskowych nie wykonuje kryptografii. Nie ma zachowania specyficznego dla trybu FIPS; enkodery działają identycznie niezależnie od profilu FIPS.

NextPDF implementuje te symboliki względem opublikowanych standardów cytowanych poniżej i przypina ślady referencyjne w swoim zestawie testów. Stwierdzenia na tej stronie to deklaracje możliwości: wsparcie to nie konformancja, a konformancja to nie certyfikacja. NextPDF nie posiada żadnej certyfikacji symbolik. Kotwice klauzul są parafrazowane ze źródła produktu i jego fikstur konformancji; korpus silnika zgodności nie obejmuje standardów symbolik kodów kreskowych, więc kotwice poniżej są oparte na produkcie bez identyfikatorów referencyjnych.

PowierzchniaStandardKotwica klauzuli (parafraza)
Algebra szerokości elementów GS1 DataBarISO/IEC 24724:2011§5.2 struktura znaku symbolu; Annex F.1 opracowany przykład (Omnidirectional); Annex F.2 (Limited); Annex F.3 (Expanded)
Układy stacked GS1 DataBarISO/IEC 24724:2011§5.4 Stacked; §5.5 Stacked Omnidirectional; §7.2.8 podział na rzędy i separatory Expanded Stacked
Enkodacja GS1 DataBar ExpandedISO/IEC 24724:2011§7.2.5.5 trzytrybowa maszyna stanów kompaktowania; §7.2.6 znak kontrolny mod-211
Powiązania GS1 Composite i CC-CISO/IEC 24723:2010§5.4 semantyka słowa kodowego CCSI; §5.1 dopuszczalność nośnika
Słowa kodowe GS1 Composite CC-AISO/IEC 24723:2010§5 enkodacja ciągu binarnego ogólnego przeznaczenia z konwersją base-928
Struktura symbolu rMQRISO/IEC 23941:2022§6.3.2 Table 1 wymiary wersji; §7.8.2 stała maska; Annex C / Annex I referencja format-info
Micro QRISO/IEC 18004pojemność Micro QR M1–M4 oraz informacja o formacie
Han Xin CodeISO/IEC 20830:2021struktura symbolu; wzorce wyszukiwania i wyrównania; tryby GB 2312 Region 1/2; ECC Reed–Solomon; maskowanie
JabCodeISO/IEC 23634struktura symbolu, koloru i ECC
Symbolika pocztowaUSPS-B-3200struktura pól Intelligent Mail Barcode

Wariant jest oznaczony jako Zweryfikowane, gdy ćwiczy go fikstura w pro/tests/**, najlepiej ślad referencyjny przypięty do opublikowanego opracowanego przykładu. Dostarczany wariant bez dedykowanej fikstury pozostaje Deklarowane. Wariant bez enkodera jest Nieobsługiwane.

Symbolika / wariantStatusDowód (ścieżka testu)Uwagi
Micro QR (M1–M4)Zweryfikowanepro/tests/Unit/Barcode/MicroQrEncoderTest.phpPoziom jednostkowy; fikstura śladu referencyjnego opracowanego przykładu to śledzone uzupełnienie
DotCodeZweryfikowanepro/tests/Unit/Barcode/DotCodeEncoderTest.php; DotCodeGfArithmeticTest.phpArytmetyka ciała Galois objęta; brak round-tripu z dekoderem dostawcy
Han Xin CodeZweryfikowanepro/tests/Unit/Barcode/HanXinEncoderTest.php; HanXinRsEncodingTest.phpŚcieżka kodowania Reed–Solomon jawnie ćwiczona
JabCode (1–61 symboli, 4–256 kolorów, ECC 0–10)Zweryfikowanepro/tests/Unit/Barcode/JabCode/JabCodeEncoderTest.php (+ 11 zestawów komponentów w tym samym katalogu)Kaskada wielosymbolowa i zakres ECC ćwiczone; brak round-tripu z dekoderem dostawcy
USPS Intelligent Mail BarcodeZweryfikowanepro/tests/Unit/Barcode/ImbEncoderTest.php; ImbRoutingCodeTest.phpWalidacja kodu routingu oraz długości 20/25/29/31 cyfr ćwiczona
rMQR — wszystkie 32 wersje ISO/IEC 23941Zweryfikowanepro/tests/Conformance/Barcode/Rmqr/AnnexValidatedSizesTest.php; RmqrAnnexCFormatInfoTest.php; pro/tests/Unit/Barcode/Rmqr/RmqrEncoderTest.phpPary wersja/EC sprawdzone względem ISO/IEC 23941 Table 1; wartości referencyjne format-info z Annex C / Annex I
GS1 DataBar — Omnidirectional / TruncatedZweryfikowanepro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarReferenceTest.phpBajtowo równe opracowanemu przykładowi z Annex F.1; Truncated współdzieli kodowanie przy zmniejszonej wysokości
GS1 DataBar — Stacked / Stacked OmnidirectionalZweryfikowanepro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarStackedReferenceTest.phpPodział na rzędy wyprowadzony ze śladu z Annex F.1; konstrukcja separatorów zgodnie z §5.4 i §5.5
GS1 DataBar — LimitedZweryfikowanepro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarLimitedReferenceTest.php; pro/tests/Unit/Barcode/Gs1DataBar/Gs1DataBarLimitedEncoderTest.phpBajtowo równe opracowanemu przykładowi z Annex F.2 (pozycja 00098765432105)
GS1 DataBar — ExpandedZweryfikowanepro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarExpandedReferenceTest.php; pro/tests/Integration/Barcode/Gs1DataBarExpandedTwoDecoderTest.phpBajtowo równe opracowanemu przykładowi z Annex F.3 ((10)12A); round-trip niezależnym dekoderem względem zxing-cpp i ZBar
GS1 DataBar — Expanded StackedZweryfikowanepro/tests/Unit/Barcode/Gs1DataBar/Gs1DataBarExpandedEncoderTest.php (przypadki stacked); powyższy round-trip integracyjnyTen sam potok danych co jednorzędowy Expanded; podział na rzędy i separatory §7.2.8 potwierdzone
GS1 Composite — CC-C (nośnik PDF417)Zweryfikowanepro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentCTest.php; CompositeRoundtripTest.php; CompositeLinkageTest.phpSłowo kodowe CCSI 920 i współdziałanie flagi powiązań objęte
GS1 Composite — CC-ACzęściowepro/tests/Unit/Barcode/Gs1Composite/CompositeComponentACodewordTest.php; pro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentATest.phpGenerowanie słów kodowych Zweryfikowane (base-928, samosprawdzenie round-trip); renderowanie pełnosymbolowe nieobsługiwane — encode() zawodzi bezpiecznie (fail closed)
GS1 Composite — CC-BNieobsługiwanepro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentBTest.php (potwierdza odrzucenie fail-closed)Brak kodowania 2D; pomocnik powiązań (CCSI 901) pozostaje dostępny
Parser AI GS1Zweryfikowanepro/tests/Unit/Barcode/Gs1DataParserTest.php; Gs1DataParserFnc1Test.phpOba formaty wejścia oraz wszystkie trzy wyjścia sekwencji bajtów nośnika ćwiczone
Walidator łańcucha dostaw GS1Zweryfikowanepro/tests/Unit/Barcode/Gs1ValidatorTest.php; Gs1ValidatorCrossAiTest.php; pro/tests/Unit/Barcode/Gs1/Gs1ValidatorDateValidationEdgeCaseTest.phpCyfry kontrolne, obowiązkowe kombinacje między-AI oraz logika dat ćwiczone
  • Kotwice dowodowe na tej stronie to ścieżki testów w pro/tests/**; repozytorium nie dostarcza katalogu examples/ dla tego modułu.
  • Siedem nazw możliwości wymienionych w sekcji Dostępność i licencjonowanie to klucze, które wiąże dostawca usług. Enkoder IMB jest konstruowany bezpośrednio i nie posiada klucza rejestru.
  • CC-A emituje tylko metodę enkodacji ogólnego przeznaczenia; metody skompresowane specyficzne dla aplikacji to udokumentowana pozostałość gęstości, a nie luka poprawności.

Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz wspieraną powierzchnię publicznego API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.