콘텐츠로 이동
getnextpdf.com

Pro 에디션

Barcode — 심층 참조

NextPDF Pro 바코드 표면은 Core 바코드 모듈 위에 특수 2D 및 공급망 심볼로지를 더합니다. 여기에는 레지스트리로 해석되는 여섯 개의 2D 인코더(Micro QR, DotCode, Han Xin Code, JabCode, rMQR, GS1 DataBar), 하나의 GS1 Composite 2D 구성 요소 인코더(CC-C), USPS Intelligent Mail 1D 인코더, 그리고 GS1 Application Identifier 파서와 공급망 검증기가 포함됩니다. 인코딩은 결정적입니다. 동일한 페이로드와 옵션은 항상 동일한 모듈 매트릭스를 생성합니다. 이 페이지는 공개 API, 동작 계약, 실패 모드, 그리고 심볼로지별 적합성 근거를 기술합니다.

이 기능은 NextPDF Pro(nextpdf/pro)에 포함되며 Pro 등급 라이선스 봉투로 활성화됩니다. 해당 자격이 없는 배포는 이 기능의 클래스를 로드하지 않습니다. 에디션을 비교하고 라이선스 받기.

Terminal window
composer require nextpdf/pro:^3

각 심볼로지는 라이선스 봉투에서 자체 기능 이름을 바인딩합니다: barcode.microqr, barcode.dotcode, barcode.hanxin, barcode.jabcode, barcode.rmqr, barcode.gs1databar, barcode.gs1-composite-cc-c. 해당 기능에 라이선스가 없으면 레지스트리는 그 인코더를 해석하지 않습니다. GS1 Composite CC-A 및 CC-B 전체 심볼 인코딩은 지원되지 않으므로(지원 상태 표 참조), barcode.gs1-composite-cc-a 또는 barcode.gs1-composite-cc-b 키는 등록되지 않습니다.

레지스트리 키는 Core NextPDF\Barcode\Barcode2DType 케이스 값과 리터럴 키 gs1-composite-cc-c에서 나옵니다. 레지스트리로 해석되는 인코더의 경우, 안정적인 계약은 인코더 FQCN이 아니라 레지스트리 키입니다.

심볼매개변수기본 동작반환던지거나 실패하는 경우비고
BarcodeProServiceProvider::register()BarcodeEncoderRegistry $registry일곱 개의 Pro 레지스트리 키를 모두 바인딩void정적; 멱등적 — 두 번째 호출은 첫 번째 바인딩을 대체
MicroQrEncoder::encode()$data; 옵션 ecLevel('L', 'M', 'Q'; 기본 'L'), version(1–4 또는 null), mask(0–3 또는 null)가장 작은 적합 버전 M1–M4 자동 선택Barcode2DDataInvalidArgumentException지원되지 않는 'H'는 조용히 'L'로 강제됨(실패-차단 EC 선택이 필요한 호출자는 사전 검증해야 함); M1은 ecLevel을 무시
DotCodeEncoder::encode()$data; 옵션 gs1(bool, 기본 false), columns(int), rows(int), ratio(float, 기본 1.5)1.5 너비:높이로 그리드 자동 크기 조정Barcode2DDataInvalidArgumentException그리드 치수는 축별로 강제될 수 있음
HanXinEncoder::encode()$data; 옵션 ecLevel(0–3, 기본 1), version(1–84, 기본 auto)가장 작은 적합 버전Barcode2DDataInvalidArgumentExceptionISO/IEC 20830에 따른 GB 2312 Region 1/2 텍스트 모드
JabCodeEncoder::encode()$data; 옵션 colors(4, 8, 16, 32, 64, 128, 256; 기본 8), eccLevel(0–10, 기본 3), symbolNumber(1–61, 기본 1), symbolVersions, symbolPositions, symbolEccLevels단일 8색 심볼BarcodeColorDataInvalidArgumentException, JabCodeEncodingException팔레트를 갖춘 다색 모듈 매트릭스
RmqrEncoder::encode()$data; 옵션 ecLevel(RmqrConstants::EC_M 기본, 또는 EC_H), version(예: 'R7x43', 기본 auto)32개 ISO/IEC 23941 버전 중 가장 작은 적합 버전Barcode2DDataInvalidArgumentException용량을 초과하는 페이로드는 거부; 절대 잘라내지 않음
Gs1DataBarEncoder::encode()$data; 옵션 variant(Gs1DataBarVariant, 기본 OMNIDIRECTIONAL), linkage(bool, 기본 false), height(int, 기본 변형 최소값; Expanded Stacked는 행별), segmentsPerRow(int, 기본 4; Expanded Stacked 전용)GTIN 입력(§5/§6 패밀리) 또는 GS1 AI 요소 문자열(§7 패밀리)을 인코딩Barcode2DDataInvalidArgumentException; InvalidSymbolStructureException일곱 개의 ISO/IEC 24724 Annex J 변형 모두 인코딩
Gs1DataBarVariantisImplemented()가 일곱 케이스 모두에 대해 true 반환enum (7 케이스)Annex J에 따른 minimumHeightX()defaultHeightX()
ImbEncoder::encode()string $code(20, 25, 29, 또는 31자리)65개의 4상태 바BarcodeDataInvalidArgumentException1D 인코더 인터페이스; 2D 레지스트리 키가 아님
ImbEncoder::encodeToString()string $code바 상태를 T/A/D/F 문자열로stringInvalidArgumentExceptionUSPS 참조 벡터에 대한 검사용
Gs1DataParser::parse()string $dataDigital Link URI를 자동 감지, 그렇지 않으면 (AI)value 형식Gs1ParsedDataInvalidArgumentExceptionCore Gs1DataParserInterface 계약을 구현
Gs1DataParser::parseDigitalLink()string $uriGS1 Digital Link URI를 파싱Gs1ParsedDataInvalidArgumentException
Gs1DataParser::encodeForCode128() / ::encodeForQrCode() / ::encodeForDataMatrix()object $parsed해당 캐리어의 FNC1 관례를 적용한 캐리어 바이트 시퀀스stringGs1ParsedData 인스턴스를 기대
Gs1DataParser::validateAI()string $ai, string $value하나의 AI 값에 대한 구조적 검사bool
Gs1Validator::validate()string $barcodeData, Gs1SupplyChainProfile $profile(기본 NONE)run()을 감싸는 정적 빠른 경로Gs1ValidationResult파싱 실패는 예외가 아니라 발견으로 처리
Gs1Validator::run()validate()와 동일파싱, 체크 디지트, 날짜, 교차 AI 규칙, 프로필Gs1ValidationResult인스턴스 경로; 생성자는 주입된 파서를 받음
Gs1SupplyChainProfileNONE은 프로필 규칙을 건너뜀enum (5 케이스)RETAIL, FOOD, PHARMA, LOGISTICS, NONE; requiredAIs(), recommendedAIs(), primaryIdentifiers()
Gs1ValidationResult생성 시 발견을 심각도로 분할readonly classisValid, findings, errors, warnings, infos, parsedData; passes(), fails(), totalFindings()
Gs1ValidationFinding / Gs1FindingSeverityseverity, ruleId, message, 선택적 aisuggestionreadonly class / enum심각도: Error, Warning, Info
CompositeComponentA::codewordsFor()string $data§5 범용 이진 문자열 인코데이션, base-928 변환, 라운드 트립 자체 검사list<int>(각 0–927)InvalidArgumentExceptionlinkFor() 또는 외부 CC-A 캐리어 렌더러에 공급
CompositeComponentA::encode()무시됨CC-A 전체 심볼 렌더링 거부UnsupportedBarcodeFeature(항상)실패-차단; 엣지 케이스 참조
CompositeComponentB::encode()무시됨CC-B 2D 인코딩 거부UnsupportedBarcodeFeature(항상)linkFor()는 계속 사용 가능(CCSI 901)
CompositeComponentC::encode()$data; 옵션은 PDF417 캐리어로 전달; carrierType(기본 GS1_128)CCSI 코드워드 920을 선두로 하는 전체 PDF417 캐리어Barcode2DDataBarcodeException; CompositeLinkageExceptionGS1_128 캐리어만 허용됨
CompositeComponent{A,B,C}::linkFor()string $carrierId, array $codewords, CompositeCarrierType $carrierType구성 요소 코드워드를 1D 캐리어와 짝지음CompositeLinkageCompositeLinkageException캐리어 허용성과 용량을 강제
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

Core 기본 레지스트리 팩토리는 Pro 인코더를 지연, 라이선스 기반 항목으로 사전 바인딩합니다. BarcodeProServiceProvider::register()는 기본값이 없는 레지스트리를 구성하는 애플리케이션(예: 자체 컨테이너를 갖춘 프레임워크 통합)을 위한 지원되는 폴백입니다. 각 인코더는 문자열 페이로드와 심볼로지별 옵션을 페이지 렌더러가 PDF 콘텐츠 연산자로 바꾸는 바코드 데이터 객체로 변환합니다.

Gs1DataParser는 사람이 읽을 수 있는 AI 문자열((01)09521234543213(17)260131)과 GS1 Digital Link URI를 받습니다. 각 캐리어의 FNC1과 그룹 구분자 관례를 적용하여 GS1-128, QR Code, Data Matrix 캐리어용 인코딩된 바이트 시퀀스를 생성합니다. Gs1Validator는 다섯 단계 파이프라인을 실행합니다: 파싱, 체크 디지트(GTIN, SSCC), 날짜 로직, 교차 AI 규칙, 산업 프로필 필수 AI. 파싱 실패는 발견을 담은 유효하지 않은 결과를 산출하며 예외를 던지지 않습니다. 발견은 심각도에 따라 오류, 경고, 정보로 분할됩니다.

Gs1DataBarEncoder::encode()는 일곱 개의 ISO/IEC 24724:2011 Annex J 변형 모두를 하나의 옵션 계약을 통해 디스패치합니다. Omnidirectional, Truncated, Stacked, Stacked Omnidirectional은 mod-79 검사 문자를 갖는 §5 요소 너비 대수를 공유합니다. Limited는 mod-89 검사 문자를 갖는 자체 §6 심볼 문자 대수를 사용합니다. Expanded와 Expanded Stacked는 §7 (17,4) 대수를 사용합니다: §7.2.5.5 3모드 숫자, 영숫자, ISO/IEC 646 압축 상태 기계와 mod-211 검사 문자(§7.2.6). §5/§6 패밀리는 mod-10 체크 디지트를 갖는 14자리 GTIN-14 또는 13자리 품목 식별을 받습니다. §7 패밀리는 원시 GS1 AI 요소 문자열(숫자, 문자, ISO/IEC 646 구두점 부분집합, 바이트 0x1D인 FNC1)을 받습니다. linkage 옵션은 GS1 Composite 심볼의 선형 구성 요소로 사용하기 위한 2D 구성 요소 연결 플래그를 설정합니다.

CC-C는 필수 CCSI 코드워드 920을 선두 데이터 코드워드로 주입하여 전체 PDF417 캐리어에 걸친 완전한 2D 확장 구성 요소를 생성합니다(ISO/IEC 24723:2010 §5.4). CC-A는 실패-차단 인코딩-디코딩 라운드 트립 자체 검사와 함께 codewordsFor()를 통해 적합한 base-928 데이터 코드워드를 생성하지만, 전체 심볼 렌더링은 거부합니다. CC-B는 2D 인코딩을 전면 거부합니다. linkFor()는 구성 요소 코드워드를 CompositeLinkage 값으로 1D 캐리어와 짝지으며, 캐리어 허용성과 용량을 강제합니다.

  • 모든 인코더는 빈 페이로드를 InvalidArgumentException으로 거부합니다.
  • Micro QR: 지원되지 않는 H 오류 정정 수준을 요청하면 실패하는 대신 조용히 L로 강제됩니다(실패-차단 EC 선택이 필요하면 옵션을 사전 검증하세요). ISO/IEC 18004이 Micro QR 심볼에 대해 L, M, Q만 정의하기 때문입니다.
  • rMQR: 오류 정정 수준은 M 또는 H여야 합니다. 32개 버전의 용량을 초과하는 페이로드는 거부되며 절대 잘리지 않습니다.
  • JabCode: 지원되는 2의 거듭제곱 집합을 벗어난 색상 수, 0–10을 벗어난 ECC 수준, 또는 1–61을 벗어난 심볼 수는 거부됩니다. 다운스트림 인코딩 실패는 JabCodeEncodingException을 일으킵니다.
  • GS1 DataBar: §5/§6 패밀리는 GTIN mod-10 체크 디지트를 검증하며, Limited는 지시 숫자를 0 또는 1로 제한합니다. §7 패밀리는 인코딩할 수 없는 문자와 후행 또는 이중 FNC1 구분자를 거부합니다. Expanded Stacked는 행당 홀수 심볼 문자 수와 34X 최소값 미만의 행당 높이를 거부합니다. 내부 구조 자체 검사는 잘못된 심볼을 방출하는 대신 InvalidSymbolStructureException으로 실패합니다.
  • GS1 Composite: CC-A와 CC-B의 encode()는 항상 UnsupportedBarcodeFeature를 던집니다(실패-차단). CC-C는 빈 데이터 또는 PDF417 용량 초과(925 코드워드 초과)에 대해 BarcodeException을, 허용되지 않는 캐리어에 대해 CompositeLinkageException을 던집니다.
  • GS1 검증은 인코딩 전에 잘못된 AI 구조와 잘못된 체크 디지트를 표시합니다. 유효하지 않은 공급망 문자열은 스캔 가능한 적합 심볼을 결코 생성하지 않습니다.
  • IMB는 20, 25, 29, 또는 31자리 입력만 받습니다.
  • 바코드 인코딩은 암호화를 수행하지 않습니다. FIPS 모드 관련 동작은 없습니다. 인코더는 FIPS 프로필과 무관하게 동일하게 실행됩니다.

NextPDF는 아래에 인용된 발행 표준에 대조하여 이러한 심볼로지를 구현하고 테스트 스위트에 참조 트레이스를 고정합니다. 이 페이지의 진술은 기능 주장입니다: 지원은 적합성이 아니며, 적합성은 인증이 아닙니다. NextPDF는 어떤 심볼로지 인증도 보유하지 않습니다. 조항 앵커는 제품 소스와 그 적합성 픽스처에서 의역한 것입니다. 컴플라이언스 엔진 코퍼스는 바코드 심볼로지 표준을 다루지 않으므로, 아래 앵커는 참조 식별자 없이 제품에 근거합니다.

표면표준조항 앵커 (의역)
GS1 DataBar 요소 너비 대수ISO/IEC 24724:2011§5.2 심볼 문자 구조; Annex F.1 워크드 예제(Omnidirectional); Annex F.2(Limited); Annex F.3(Expanded)
GS1 DataBar stacked 레이아웃ISO/IEC 24724:2011§5.4 Stacked; §5.5 Stacked Omnidirectional; §7.2.8 Expanded Stacked 행 분할 및 구분자
GS1 DataBar Expanded 인코데이션ISO/IEC 24724:2011§7.2.5.5 3모드 압축 상태 기계; §7.2.6 mod-211 검사 문자
GS1 Composite 연결 및 CC-CISO/IEC 24723:2010§5.4 CCSI 코드워드 시맨틱; §5.1 캐리어 허용성
GS1 Composite CC-A 코드워드ISO/IEC 24723:2010§5 base-928 변환을 갖춘 범용 이진 문자열 인코데이션
rMQR 심볼 구조ISO/IEC 23941:2022§6.3.2 Table 1 버전 치수; §7.8.2 고정 마스크; Annex C / Annex I 포맷 정보 참조
Micro QRISO/IEC 18004Micro QR M1–M4 용량 및 포맷 정보
Han Xin CodeISO/IEC 20830:2021심볼 구조; finder 및 alignment 패턴; GB 2312 Region 1/2 모드; Reed–Solomon ECC; 마스킹
JabCodeISO/IEC 23634심볼, 색상, ECC 구조
Postal 심볼로지USPS-B-3200Intelligent Mail Barcode 필드 구조

변형은 pro/tests/** 아래의 픽스처가 이를 실행할 때 — 가급적 발행된 워크드 예제에 고정된 참조 트레이스일 때 — Verified입니다. 전용 픽스처가 없는 제공된 변형은 Claimed로 남습니다. 인코더가 없는 변형은 Not supported입니다.

심볼로지 / 변형상태근거 (테스트 경로)비고
Micro QR (M1–M4)Verifiedpro/tests/Unit/Barcode/MicroQrEncoderTest.php단위 수준; 워크드 예제 참조 트레이스 픽스처는 추적 중인 백필
DotCodeVerifiedpro/tests/Unit/Barcode/DotCodeEncoderTest.php; DotCodeGfArithmeticTest.php갈루아 필드 산술 다룸; 벤더 디코더 라운드 트립 없음
Han Xin CodeVerifiedpro/tests/Unit/Barcode/HanXinEncoderTest.php; HanXinRsEncodingTest.phpReed–Solomon 인코딩 경로가 명시적으로 실행됨
JabCode (1–61 심볼, 4–256 색상, ECC 0–10)Verifiedpro/tests/Unit/Barcode/JabCode/JabCodeEncoderTest.php (+ 같은 디렉터리 내 11개 구성 요소 스위트)다중 심볼 캐스케이드와 ECC 범위 실행; 벤더 디코더 라운드 트립 없음
USPS Intelligent Mail BarcodeVerifiedpro/tests/Unit/Barcode/ImbEncoderTest.php; ImbRoutingCodeTest.php라우팅 코드와 20/25/29/31자리 길이 검증 실행
rMQR — 32개 ISO/IEC 23941 버전 전부Verifiedpro/tests/Conformance/Barcode/Rmqr/AnnexValidatedSizesTest.php; RmqrAnnexCFormatInfoTest.php; pro/tests/Unit/Barcode/Rmqr/RmqrEncoderTest.php버전과 EC 쌍을 ISO/IEC 23941 Table 1에 대조 검사; Annex C / Annex I 포맷 정보 참조 값
GS1 DataBar — Omnidirectional / TruncatedVerifiedpro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarReferenceTest.phpAnnex F.1 워크드 예제와 바이트 동일; Truncated는 감소된 높이에서 인코딩을 공유
GS1 DataBar — Stacked / Stacked OmnidirectionalVerifiedpro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarStackedReferenceTest.phpAnnex F.1 트레이스에서 파생된 행 분할; §5.4와 §5.5에 따른 구분자 구성
GS1 DataBar — LimitedVerifiedpro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarLimitedReferenceTest.php; pro/tests/Unit/Barcode/Gs1DataBar/Gs1DataBarLimitedEncoderTest.phpAnnex F.2 워크드 예제(item 00098765432105)와 바이트 동일
GS1 DataBar — ExpandedVerifiedpro/tests/Conformance/Barcode/Gs1DataBar/Gs1DataBarExpandedReferenceTest.php; pro/tests/Integration/Barcode/Gs1DataBarExpandedTwoDecoderTest.phpAnnex F.3 워크드 예제((10)12A)와 바이트 동일; zxing-cpp 및 ZBar에 대한 독립 디코더 라운드 트립
GS1 DataBar — Expanded StackedVerifiedpro/tests/Unit/Barcode/Gs1DataBar/Gs1DataBarExpandedEncoderTest.php(stacked 케이스); 위의 통합 라운드 트립단일 행 Expanded와 동일한 데이터 파이프라인; §7.2.8 행 분할과 구분자 단언
GS1 Composite — CC-C (PDF417 캐리어)Verifiedpro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentCTest.php; CompositeRoundtripTest.php; CompositeLinkageTest.phpCCSI 코드워드 920과 연결 플래그 상호작용 다룸
GS1 Composite — CC-APartialpro/tests/Unit/Barcode/Gs1Composite/CompositeComponentACodewordTest.php; pro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentATest.php코드워드 생성 Verified(base-928, 라운드 트립 자체 검사); 전체 심볼 렌더링 미지원 — encode()는 실패-차단
GS1 Composite — CC-BNot supportedpro/tests/Conformance/Barcode/Gs1Composite/CompositeComponentBTest.php(실패-차단 거부 단언)2D 인코딩 없음; 연결 헬퍼(CCSI 901)는 계속 사용 가능
GS1 AI 파서Verifiedpro/tests/Unit/Barcode/Gs1DataParserTest.php; Gs1DataParserFnc1Test.php두 입력 형식과 세 캐리어 바이트 시퀀스 출력 모두 실행
GS1 공급망 검증기Verifiedpro/tests/Unit/Barcode/Gs1ValidatorTest.php; Gs1ValidatorCrossAiTest.php; pro/tests/Unit/Barcode/Gs1/Gs1ValidatorDateValidationEdgeCaseTest.php체크 디지트, 교차 AI 필수 조합, 날짜 로직 실행
  • 이 페이지의 근거 앵커는 pro/tests/** 아래의 테스트 경로입니다. 리포지터리는 이 모듈에 대해 examples/ 디렉터리를 제공하지 않습니다.
  • 가용성 및 라이선싱에 나열된 일곱 개 기능 이름은 서비스 공급자가 바인딩하는 키입니다. IMB 인코더는 직접 생성되며 레지스트리 키를 갖지 않습니다.
  • CC-A는 범용 인코데이션 방법만 방출합니다. 애플리케이션별 압축 방법은 정확성 간극이 아니라 문서화된 밀도 잔여 사항입니다.

이 페이지는 외부에서 관찰 가능한 동작과 지원되는 공개 API 표면만 문서화합니다. 내부 네임스페이스 경로, 헬퍼 클래스, 메커니즘 표, 런북 파일 이름, 티켓 접두사는 범위 밖입니다.