이것은 사용하기 쉽고, 비부대적이며, 프레임워크에 독립적인 PHP 바코드 생성기입니다. 이는 제로(!) 작곡가 종속성을 사용하며 소수의 파일에 불과합니다. 아마도 이것이 Packagist에서 가장 많이 다운로드된 PHP용 바코드 생성기인 이유일 것입니다. ;)
가장 많이 사용되는 1D 바코드 표준에서 SVG, PNG, JPG 및 HTML 이미지를 생성합니다.
QR 코드와 같은 2D 바코드는 지원되지 않습니다.
바코드 아래 텍스트 없이 바코드의 '바' 부분만 생성합니다. 바코드 아래에 코드 텍스트를 원하는 경우 나중에 이 패키지의 출력에 추가할 수 있습니다.
작곡가를 통해 설치:
composer require picqer/php-barcode-generator
PNG 또는 JPG 이미지를 생성하려면 시스템에 GD 라이브러리 또는 Imagick도 설치되어 있어야 합니다. SVG 또는 HTML 렌더링의 경우 종속성이 없습니다.
특정 이미지 형식(예: PNG 또는 SVG)의 특정 "유형"(예: 코드 128 또는 UPC)에 대한 바코드를 원합니다.
먼저 바코드를 원하는 문자열을 바코드 유형 중 하나를 사용하여 Barcode
개체로 인코딩합니다.
그런 다음 렌더러 중 하나를 사용하여 Barcode
개체의 막대 이미지를 렌더링합니다.
"유형"은 어떤 문자를 인코딩할 수 있는지, 어떤 막대가 어떤 문자를 나타내는지 정의하는 표준입니다. 가장 많이 사용되는 유형은 코드 128과 EAN/UPC입니다. 모든 문자를 각 바코드 유형으로 인코딩할 수 있는 것은 아니며 모든 바코드 스캐너가 모든 유형을 읽을 수 있는 것은 아닙니다.
<?phprequire 'vendor/autoload.php';// Code128 인코딩의 바코드 객체를 만듭니다.$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// 브라우저에서 바코드를 HTML로 출력합니다. HTML 렌더러$renderer = 새로운 PicqerBarcodeRenderersHtmlRenderer();echo $렌더러->렌더($바코드);
다음과 같은 아름다움을 얻을 수 있습니다.
각 렌더러에는 고유한 옵션이 있습니다. 예를 들어 PNG의 높이, 너비 및 색상을 설정할 수 있습니다.
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (새 PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = 새 PicqerBarcodeRenderersPngRenderer();$renderer ->setForegroundColor($colorRed);// PNG 저장 widthFactor 3(바코드 너비 x 3) 및 높이 50픽셀을 사용하여 파일 시스템에 file_put_contents('barcode.png', $renderer->render($barcode, $barcode->getWidth() * 3, 50));
사용 가능한 이미지 렌더러: SVG, PNG, JPG 및 HTML.
이들은 모두 RendererInterface를 준수하며 동일한 render()
메서드를 갖습니다. 일부 렌더러에는 set*() 메서드를 통해 추가 옵션도 있습니다.
render() 메소드에는 Barcode 객체, 너비 및 높이가 필요합니다. JPG/PNG 이미지의 경우 바코드 개체 너비의 일부인 너비를 제공하는 경우에만 유효한 바코드를 얻을 수 있습니다. 이것이 바로 예제에서 $barcode->getWidth() * 2
표시하여 이미지를 바코드 데이터 너비보다 픽셀 단위로 2배 더 넓게 만드는 이유입니다. 너비로 임의의 숫자를 지정할 수 있으며 이미지 크기는 최대한 조정되지만 앤티앨리어싱이 없으면 완벽하게 유효하지 않습니다.
HTML 및 SVG 렌더러는 모든 너비와 높이, 심지어 부동 소수점까지 처리할 수 있습니다.
각 렌더러에 대한 모든 옵션은 다음과 같습니다.
벡터 기반 SVG 이미지입니다. 최상의 인쇄 품질을 제공합니다.
$renderer = 새로운 PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // 막대에 빨간색을 지정하고 기본값은 검은색입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $renderer->setBackgroundColor([0, 0, 255]); // 배경색으로 파란색을 지정합니다. 기본값은 투명입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // 독립형 SVG 이미지 대신 HTML 문서 내에서 인라인으로 사용되도록 출력을 변경합니다. (기본값)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // 기본값을 강제로 적용하려면 독립 실행형 SVG image$renderer->render($barcode, 450.20, 75); // 너비와 높이가 부동 소수점을 지원합니다.
PNG와 JPG의 모든 옵션은 동일합니다.
$renderer = 새로운 PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // 막대의 색상을 지정합니다. 기본값은 검정색입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $renderer->setBackgroundColor([0, 255, 255]); // 배경색을 지정합니다. 기본값은 투명(PNG) 또는 흰색(JPG)입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $렌더러->useGd(); // Imagick과 GD가 설치되어 있지만 GD$renderer->useImagick()을 사용하려는 경우; // Imagick과 GD가 설치되어 있지만 Imagick을 사용하려는 경우$renderer->render($barcode, 5, 40); // 너비 요소(각 막대의 너비가 몇 픽셀인지) 및 높이(픽셀)
전체 HTML 문서에서 인라인을 사용할 HTML을 제공합니다.
$renderer = 새로운 PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // 막대에 빨간색을 지정하고 기본값은 검은색입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $renderer->setBackgroundColor([0, 0, 255]); // 배경색으로 파란색을 지정합니다. 기본값은 투명입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $renderer->render($barcode, 450.20, 75); // 너비와 높이가 부동 소수점을 지원합니다.
고정된 크기의 컨테이너/div 안에 넣기 위해 바코드가 전체 너비와 높이를 사용하는 HTML을 여기에서 제공합니다.
$renderer = 새로운 PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // 막대에 빨간색을 지정하고 기본값은 검은색입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $renderer->setBackgroundColor([0, 0, 255]); // 배경색으로 파란색을 지정합니다. 기본값은 투명입니다. 빨간색, 녹색, 파란색에 대해 0~255 값을 3번 곱합니다. $렌더러->렌더($바코드);
다음과 같이 렌더링된 HTML을 div 안에 넣을 수 있습니다.
<div style="너비: 400px; 높이: 75px"><?php echo $renderedBarcode; ?></div>
다음 바코드 유형이 지원됩니다. 모든 유형은 다양한 문자 세트를 지원하며 일부 유형에는 필수 길이가 있습니다. 유형별로 지원되는 문자와 길이는 Wikipedia를 참조하세요.
src/Types 폴더에서 지원되는 모든 유형을 찾을 수 있습니다.
가장 많이 사용되는 유형은 TYPE_CODE_128 및 TYPE_CODE_39입니다. 최고의 스캐너 지원으로 인해 가변 길이와 대부분의 문자가 지원됩니다.
TYPE_CODE_32(이탈리아 의약품 코드 'MINSAN')
TYPE_CODE_39
TYPE_CODE_39_CHECKSUM
TYPE_CODE_39E
TYPE_CODE_39E_CHECKSUM
TYPE_CODE_93
TYPE_STANDARD_2_5
TYPE_STANDARD_2_5_CHECKSUM
TYPE_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_CHECKSUM
TYPE_CODE_128
TYPE_CODE_128_A
TYPE_CODE_128_B
TYPE_CODE_128_C
TYPE_EAN_2
TYPE_EAN_5
TYPE_EAN_8
TYPE_EAN_13
TYPE_ITF14(GTIN-14라고도 함)
TYPE_UPC_A
TYPE_UPC_E
TYPE_MSI
TYPE_MSI_CHECKSUM
TYPE_POSTNET
TYPE_PLANET
TYPE_RMS4CC
TYPE_KIX
TYPE_IMB
TYPE_CODABAR
TYPE_CODE_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
지원되는 모든 바코드 유형에 대한 예시 이미지 보기
PNG나 JPG 이미지를 사용하려면 Imagick이나 GD 라이브러리를 설치해야 합니다. 이 패키지는 설치된 경우 Imagick을 사용하거나 GD로 대체됩니다. 둘 다 설치했지만 특정 방법을 원하는 경우 $renderer->useGd()
또는 $renderer->useImagick()
사용하여 원하는 대로 설정할 수 있습니다.
$barcode = (새 PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = 새 PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' . base64_encode($renderer->render ($바코드, $barcode->getWidth() * 2)) '">';
$barcode = (새 PicqerBarcodeTypesTypeCodabar())->getBarcode('081231723897');$renderer = 새 PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->render($barcode, $barcode->getWidth() * 2));
file_put_contents('barcode.svg', (new PicqerBarcodeRenderersSvgRenderer())->render((new PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
v2에서 v3로 업그레이드할 때 아무것도 변경할 필요가 없습니다. 위에서는 v3 이후 이 라이브러리를 사용하는 새로운 선호 방법을 찾을 수 있습니다. 하지만 이전 스타일은 여전히 유효합니다.
렌더러에 동일한 인터페이스를 제공하기 위해 이제 색상 설정은 항상 RGB 색상 배열을 사용합니다. 이전 BarcodeGenerator* 클래스를 사용하고 이름('red') 또는 16진수 코드(#3399ef)가 있는 색상을 사용하는 경우 ColorHelper를 사용하여 변환됩니다. 모든 16진수 코드가 지원되지만 색상 이름에는 기본 색상만 지원됩니다.
새 스타일로 변환하려는 경우 예는 다음과 같습니다.
// 기존 스타일$generator = 새 PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// 새 스타일$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' );$렌더러 = 신규 PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
렌더러의 너비는 이제 widthFactor 대신 최종 결과의 너비입니다. 동적 너비를 유지하려면 인코딩된 바코드의 너비를 가져와서 widthFactor를 곱하여 이전과 동일한 결과를 얻을 수 있습니다. 여기서 widthFactor 2에 대한 예를 참조하세요.
// 기존 스타일$generator = 새로운 PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// 새로운 스타일$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
버전 3에서는 바코드 유형 인코더와 이미지 렌더러가 완전히 분리되어 있습니다. 이렇게 하면 자신만의 렌더러를 훨씬 쉽게 만들 수 있습니다. 예전 방식은 "발전기"를 사용하는 것이었습니다. 다음은 v3에서도 여전히 작동하는 이러한 생성기의 오래된 예입니다.
원하는 출력에 대해 바코드 생성기를 시작한 다음 ->getBarcode() 루틴을 원하는 만큼 호출하십시오.
<?phprequire 'vendor/autoload.php';// 이는 브라우저에 표시할 HTML 출력으로 바코드를 출력합니다.$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
다음과 같은 아름다움을 얻을 수 있습니다.
getBarcode()
메소드는 다음 매개변수를 허용합니다.
$barcode
바코드에 인코딩하는 데 필요한 문자열
$type
바코드 유형, 클래스에 정의된 상수 사용
$widthFactor
너비는 데이터 길이를 기반으로 하며, 이 요소를 사용하면 바코드 막대를 기본값보다 넓게 만들 수 있습니다.
$height
바코드의 전체 높이(픽셀)
$foregroundColor
막대 색상(전경색)의 문자열 또는 RGB 배열인 16진수 코드
모든 매개변수 사용의 예:
<?phprequire 'vendor/autoload.php';$redColor = [255, 0, 0];$generator = new PicqerBarcodeBarcodeGeneratorPNG();file_put_contents('barcode.png', $generator->getBarcode('081231723897', $generator) ::TYPE_CODE_128, 3, 50, $redColor));
$generatorSVG = 새로운 PicqerBarcodeBarcodeGeneratorSVG(); // 벡터 기반 SVG$generatorPNG = new PicqerBarcodeBarcodeGeneratorPNG(); // 픽셀 기반 PNG$generatorJPG = new PicqerBarcodeBarcodeGeneratorJPG(); // 픽셀 기반 JPG$generatorHTML = new PicqerBarcodeBarcodeGeneratorHTML(); // 픽셀 기반 HTML$generatorHTML = new PicqerBarcodeBarcodeGeneratorDynamicHTML(); // 벡터 기반 HTML
$generator = 새로운 PicqerBarcodeBarcodeGeneratorPNG();echo '<img src="data:image/png;base64,' . base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) . '">';
$generator = new PicqerBarcodeBarcodeGeneratorJPG();file_put_contents('barcode.jpg', $generator->getBarcode('081231723897', $generator::TYPE_CODABAR));
file_put_contents('barcode.svg', (new PicqerBarcodeBarcodeGeneratorSVG())->getBarcode('6825ME601', PicqerBarcodeBarcodeGeneratorSVG::TYPE_KIX));
코드베이스는 Nicola Asuni의 TCPDF 바코드 생성기를 기반으로 합니다. 따라서 이 코드는 LGPLv3에 따라 라이센스가 부여됩니다.