Ini adalah generator kode batang yang mudah digunakan, tidak membengkak, tidak bergantung pada kerangka kerja, di PHP. Ini menggunakan nol (!) Ketergantungan komposer dan hanya segelintir file. Mungkin alasannya adalah ini adalah generator barcode yang paling banyak diunduh untuk PHP di Packagist. ;)
Ini menciptakan gambar SVG, PNG, JPG dan HTML, dari standar barcode 1D yang paling banyak digunakan.
Tidak ada dukungan untuk kode batang 2D apa pun, seperti kode QR.
Kami hanya membuat bagian 'batang' dari sebuah barcode, tanpa teks di bawah barcode. Jika Anda ingin teks kode di bawah barcode, Anda dapat menambahkannya nanti ke output paket ini.
Instal melalui komposer:
composer require picqer/php-barcode-generator
Jika Anda ingin menghasilkan gambar PNG atau JPG, Anda memerlukan perpustakaan GD atau Imagick yang diinstal pada sistem Anda juga. Untuk rendering SVG atau HTML, tidak ada ketergantungan.
Anda menginginkan kode batang untuk "tipe" tertentu (misalnya Kode 128 atau UPC) dalam format gambar tertentu (misalnya PNG atau SVG).
Pertama, enkodekan string yang ingin Anda kode batangnya ke dalam objek Barcode
dengan salah satu jenis kode batang tersebut.
Kemudian, gunakan salah satu penyaji untuk merender gambar batang pada objek Barcode
.
"Jenis" adalah standar yang menentukan karakter mana yang dapat Anda kodekan dan bilah mana yang mewakili karakter mana. Tipe yang paling banyak digunakan adalah kode 128 dan EAN/UPC. Tidak semua karakter dapat dikodekan ke dalam setiap jenis barcode, dan tidak semua pemindai barcode dapat membaca semua jenis.
<?phprequire 'vendor/autoload.php';// Jadikan objek Barcode dari pengkodean Code128.$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// Keluarkan kode batang sebagai HTML di browser dengan Perender HTML$renderer = PicqerBarcodeRenderersHtmlRenderer();echo baru $renderer->render($barcode);
Akan menghasilkan keindahan ini:
Setiap penyaji memiliki pilihannya sendiri. Misalnya, Anda dapat mengatur tinggi, lebar, dan warna PNG:
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = PicqerBarcodeRenderersPngRenderer();$renderer baru ->setForegroundColor($colorRed);// Simpan PNG ke sistem file, dengan widthFactor 3 (lebar barcode x 3) dan tinggi 50 pikselfile_put_contents('barcode.png', $renderer->render($barcode, $barcode->getWidth() * 3, 50));
Penyaji gambar yang tersedia: SVG, PNG, JPG, dan HTML.
Semuanya sesuai dengan RendererInterface dan memiliki metode render()
yang sama. Beberapa penyaji juga memiliki opsi tambahan, melalui metode set*().
Metode render() memerlukan objek Barcode, lebar dan tinggi. Untuk gambar JPG/PNG , Anda hanya mendapatkan barcode yang valid jika Anda memberikan lebar yang merupakan faktor dari lebar objek Barcode. Itulah sebabnya contoh menunjukkan $barcode->getWidth() * 2
untuk membuat gambar 2 kali lebih lebar dalam piksel daripada lebar data barcode. Anda dapat memberikan angka sembarang sebagai lebar dan gambar akan diskalakan sebaik mungkin, tetapi tanpa anti-aliasing, gambar tersebut tidak akan valid sepenuhnya.
Perender HTML dan SVG dapat menangani lebar dan tinggi apa pun, bahkan float.
Berikut ini semua opsi untuk setiap penyaji:
Gambar SVG berbasis vektor. Memberikan kualitas terbaik untuk dicetak.
$renderer = PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // Beri warna merah untuk barnya, defaultnya hitam. Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->setBackgroundColor([0, 0, 255]); // Beri warna biru untuk background, defaultnya transparan. Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // Mengubah output yang akan digunakan sebaris di dalam dokumen HTML, bukan gambar SVG yang berdiri sendiri (default)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // Jika Anda ingin memaksakan default, buat SVG image$renderer->render($barcode, 450.20, 75); // Dukungan lebar dan tinggi mengapung
Semua opsi untuk PNG dan JPG sama.
$renderer = PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // Beri warna pada bar, defaultnya adalah hitam. Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->setBackgroundColor([0, 255, 255]); // Beri warna untuk background, defaultnya transparan (dalam PNG) atau putih (dalam JPG). Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->useGd(); // Jika Anda sudah menginstal Imagick dan GD, namun ingin menggunakan GD$renderer->useImagick(); // Jika Anda telah menginstal Imagick dan GD, tetapi ingin menggunakan Imagick$renderer->render($barcode, 5, 40); // Faktor lebar (berapa lebar piksel setiap batang), dan tinggi dalam piksel
Memberikan HTML untuk digunakan sebaris dalam dokumen HTML lengkap.
$renderer = PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Beri warna merah untuk barnya, defaultnya hitam. Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->setBackgroundColor([0, 0, 255]); // Beri warna biru untuk background, defaultnya transparan. Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->render($barcode, 450.20, 75); // Dukungan lebar dan tinggi mengapung
Berikan HTML disini barcodenya menggunakan full width dan height, untuk dimasukkan ke dalam container/div yang ukurannya tetap.
$renderer = PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Beri warna merah untuk barnya, defaultnya hitam. Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->setBackgroundColor([0, 0, 255]); // Beri warna biru untuk background, defaultnya transparan. Berikan 3 kali nilai 0-255 untuk merah, hijau dan biru. $renderer->render($barcode);
Anda dapat memasukkan HTML yang dirender ke dalam div seperti ini:
<div style="lebar: 400px; tinggi: 75px"><?php echo $renderedBarcode; ?></div>
Jenis kode batang ini didukung. Semua tipe mendukung rangkaian karakter yang berbeda dan beberapa memiliki panjang wajib. Silakan lihat wikipedia untuk mengetahui karakter dan panjang yang didukung per jenis.
Anda dapat menemukan semua tipe yang didukung di folder src/Types.
Tipe yang paling banyak digunakan adalah TYPE_CODE_128 dan TYPE_CODE_39. Karena dukungan pemindai terbaik, panjang variabel, dan sebagian besar karakter didukung.
TYPE_CODE_32 (kode farmasi Italia 'MINSAN')
TYPE_CODE_39
TYPE_CODE_39_CHECKSUM
TIPE_CODE_39E
TYPE_CODE_39E_CHECKSUM
TIPE_CODE_93
TIPE_STANDARD_2_5
TYPE_STANDARD_2_5_CHECKSUM
TIPE_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_CHECKSUM
TIPE_CODE_128
TYPE_CODE_128_A
TYPE_CODE_128_B
TYPE_CODE_128_C
TIPE_EAN_2
TIPE_EAN_5
TIPE_EAN_8
TIPE_EAN_13
TYPE_ITF14 (Juga dikenal sebagai GTIN-14)
TIPE_UPC_A
TIPE_UPC_E
TIPE_MSI
TYPE_MSI_CHECKSUM
TYPE_POSTNET
TYPE_PLANET
TYPE_RMS4CC
TIPE_KIX
TYPE_IMB
TIPE_CODABAR
TIPE_CODE_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
Lihat contoh gambar untuk semua jenis kode batang yang didukung
Jika Anda ingin menggunakan gambar PNG atau JPG, Anda perlu menginstal Imagick atau perpustakaan GD. Paket ini akan menggunakan Imagick jika diinstal, atau kembali ke GD. Jika Anda telah menginstal keduanya, tetapi menginginkan metode tertentu, Anda dapat menggunakan $renderer->useGd()
atau $renderer->useImagick()
untuk memaksakan preferensi Anda.
$barcode = (PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' .base64_encode($renderer->render baru) ($kode batang, $kode batang->getWidth() * 2)) .'">';
$barcode = (PicqerBarcodeTypesTypeCodabar())->getBarcode('081231723897');$renderer = PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->render($barcode, $barcode->getWidth() baru) * 2));
file_put_contents('barcode.svg', (PicqerBarcodeRenderersSvgRenderer())->render((PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
Tidak perlu mengubah apa pun saat melakukan upgrade dari v2 ke v3. Di atas Anda menemukan cara baru yang disukai untuk menggunakan perpustakaan ini sejak v3. Namun gaya lama masih berfungsi.
Untuk memberikan antarmuka yang sama kepada penyaji, pengaturan warna kini selalu menggunakan serangkaian warna RGB. Jika Anda menggunakan kelas BarcodeGenerator* lama dan menggunakan warna dengan nama ('merah') atau kode hex (#3399ef), ini akan dikonversi menggunakan ColorHelper. Semua kode heksadesimal didukung, namun untuk nama warna hanya warna dasar yang didukung.
Jika Anda ingin mengonversi ke gaya baru, berikut contohnya:
// Gaya lama$generator = PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// Gaya baru$barcode = (PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' baru );$renderer = baru PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
Lebar di penyaji sekarang adalah lebar hasil akhir, bukan lebarFaktor. Jika Anda ingin mempertahankan lebar dinamis, Anda bisa mendapatkan lebar Barcode yang dikodekan dan mengalikannya dengan widthFactor untuk mendapatkan hasil yang sama seperti sebelumnya. Lihat di sini contoh untuk widthFactor 2:
// Gaya lama$generator = PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2.30);// Gaya baru$barcode = (baru PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
Dalam versi 3, encoder tipe barcode dan penyaji gambar benar-benar terpisah. Ini membuat pembuatan penyaji Anda sendiri menjadi lebih mudah. Cara lama menggunakan "generator". Di bawah ini adalah contoh lama generator tersebut, yang masih berfungsi di v3 juga.
Jalankan pembuat kode batang untuk keluaran yang Anda inginkan, lalu panggil rutinitas ->getBarcode() sebanyak yang Anda inginkan.
<?phprequire 'vendor/autoload.php';// Ini akan menampilkan kode batang sebagai keluaran HTML untuk ditampilkan di browser$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
Akan menghasilkan keindahan ini:
Metode getBarcode()
menerima parameter berikut:
$barcode
String diperlukan untuk menyandikan kode batang
$type
Jenis kode batang, gunakan konstanta yang ditentukan di kelas
$widthFactor
Lebar didasarkan pada panjang data, dengan faktor ini Anda dapat membuat bilah kode batang lebih lebar dari standarnya
$height
Tinggi total kode batang dalam piksel
$foregroundColor
Kode hex sebagai string, atau array RGB, dari warna batang (warna latar depan)
Contoh penggunaan semua parameter:
<?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, $warna merah));
$generatorSVG = PicqerBarcodeBarcodeGeneratorSVG() baru; // SVG$generatorPNG berbasis vektor = PicqerBarcodeBarcodeGeneratorPNG() baru; // PNG$generatorJPG berbasis piksel = PicqerBarcodeBarcodeGeneratorJPG() baru; // JPG$generatorHTML berbasis piksel = PicqerBarcodeBarcodeGeneratorHTML() baru; // HTML$generatorHTML berbasis piksel = PicqerBarcodeBarcodeGeneratorDynamicHTML() baru; // HTML berbasis vektor
$generator = new 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', (PicqerBarcodeBarcodeGeneratorSVG())->getBarcode('6825ME601', PicqerBarcodeBarcodeGeneratorSVG::TYPE_KIX));
Basis kode didasarkan pada generator kode batang TCPDF oleh Nicola Asuni. Oleh karena itu, kode ini dilisensikan di bawah LGPLv3.