Maxicode

Utilisé principalement dans le département de la poste pour envoyer des lettres et paquets.
Encode un nombre de données fixe; peut encoder des adresses postales.
Suit un standard de l'industrie.

Démonstration

* 200 caractères maximum pour cette démo.

<?php
use BarcodeBakery\Common\BCGColor;
use BarcodeBakery\Common\BCGDrawing;
use BarcodeBakery\Barcode\BCGmaxicode;

$colorFront = new BCGColor(0, 0, 0);
$colorBack = new BCGColor(255, 255, 255);

// Barcode Part
$code = new BCGmaxicode();
$code->setMode(4);
$code->setColor($colorFront, $colorBack);
$code->setErrorLevel(23);

$code->setColor($colorFront, $colorBack);
$code->parse('Maxicode');

// Drawing Part
$drawing = new BCGDrawing('', $colorBack);
$drawing->setBarcode($code);
$drawing->draw();

header('Content-Type: image/png');

$drawing->finish(BCGDrawing::IMG_FORMAT_PNG);
?>

Spécifications Techniques

Le code MaxiCode est régi par les standards internationaux ISO (IEC 16023). Vous pouvez l'utiliser pour vos applications. Il est principalement utilisé pour envoyer des paquets.

MaxiCode est un code-barres 2D qui peut encoder un nombre spécifique d'informations à l'intérieur d'un symbole carré. Tous les 256 caractères peuvent être encodés.
Il est possible d'utiliser plusieurs symboles afin de former un long message.

Ce code-barres contient un moyen de correction d'erreurs basé sur l'algorithme Reed-Solomon. Le niveau de correction inclue peut être standard ou amélioré.

Encodage

Les données encodées des différents codes-barres proviennent de différents jeux de caractères. Changer entre les différents jeux influence le nombre maximal de données que vous pouvez utiliser.

Voici la liste de chaque jeu de caractères et ce qui peut être encodé. Tous les jeux de caractères supportent FS (28), GS (29), RS (30) et l'espace (32)

  • Jeu A : Lettre majuscule, chiffres et 15 symboles de ponctuation communs : "#$%&'()*+,-./: and CR (13)
  • Jeu B : Lettre minuscule et plusieurs symboles de ponctuation : {}~`;<=>?[\]^_,./:@!| and DEL (127)
  • Jeu C : Lettre majuscule multilingue et autre caractères graphiques : ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞߪ¬±²³µ¹º¼½¾€‚ƒ„…†‡ˆ‰
  • Jeu D : Lettre minuscule multilingue et autre caractères graphiques : àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¡¨«¯°´·¸»¿Š‹ŒŽ‘’“”
  • Jeu E : ASCII 0-31, 149-160, 162-167, 169, 173-174, 182

L'encodage commence toujours par le jeu de caractères A.

Mode

Il y a cinq modes disponibles. Chacun d'eux propose différentes fonctionnalités.
Choisissez le mode approprié pour votre application.

  • Mode 1: Message pour Transporteur (voir ci-dessous)
  • Mode 4: Symbole standard (défaut)
  • Mode 5 : EEC Complet (correction améliorée)
  • Mode 6 : Programmation du Lecteur
Mode 0 est remplacé par le mode 2 ou 3; Mode 1 est remplacé par mode 4. Ces deux modes sont obsolètes et ne sont pas implémentés.

Modes 2 et 3

Ces modes doivent être réservés pour utilisation en tant que symbole de tri de destination pour une utilisation par les transporteurs dans l'industrie du transport. Ce message inclut :

  • 3 chiffres représentant la classe de service
  • 3 chiffres représentant le code de pays (ISO 3166)
  • code postal
En mode 2, le code postal encode jusqu'à 9 chiffres.
En mode 3, le code postal encode jusqu'à 6 caractères du jeu de caractères A.

Pour utiliser un de ces modes, vous devez utiliser la méthode setPrimaryMessage().
Si vous n'utilisez pas cette méthode, Barcode Bakery essaiera d'extraire les données requises avec la méthode parse().

Vous pouvez utiliser le standard générique qui commence par [)>RS01GS
Dans ce cas, le message ressemblera à ceci :
[)>RS01GSyyppppppGSaaaGSbbbGSrest

  • yy: date (yy), suivi par
  • pppppp: code postal, suivi par le séparateur GS, ensuite
  • aaa: code de pays, suivi par le séparateur GS, ensuite
  • bbb: classe de service, suivi par le séparateur GS, ensuite
  • rest: reste du message optionnel
Si vous ne fournissez pas le préfix standard, Barcode Bakery essaiera d'extraire les trois premières données séparées par GS.

Messages

MaxiCode encode les données en deux messages appelés Message Primaire et Secondaire. Pour les modes 4, 5, ou 6, les messages primaire et secondaire sont unis pour former qu'un seul.
Cependant, le message primaire utilise toujours la correction d'erreur améliorée, alors que le message secondaire utilise toujours la correction d'erreur standard sauf pour si le mode 5 est choisi.

Structured Append

Maxicode supporte le mode Structured Append. Vous pouvez répartir sur plusieurs codes-barres un unique message avec cette fonctionnalité.
Vous pouvez utiliser un maximum de 8 codes-barres différents.

Extended Channel Interpretation

{0} supporte Extended Channel Interpretation. Ceci permet que la lecture du code-barres soit interprétée avec un jeu de caractères différents de celui par défaut.
Pour l'activer, vous devez utiliser setAcceptECI() et ensuite utiliser le code \xxxxxx dans votre message. X représente un chiffre entre 0 et 9.

Vous souhaitez encoder la chaîne de caractères : ¶Ж. Les deux caractères peuvent être représentés par le code ASCII 182. Le premier caractère provient de ECI 000003 (ISO-8859-1 qui est par défaut) et le second caractère provient de ECI 000007 (ISO-8859-5 cyrillique).
Vous pouvez procéder ainsi :


$code->setAcceptECI(true);
$code->parse(chr(182) . '\000007' . chr(182));

Veuillez noter que votre lecteur de codes-barres doit supporter cette fonctionnalité.

Prêt à Imprimer

Barcode Bakery prépare le MaxiCode pour l'impression. À une résolution 1, l'image est parfaite pour l'impression à 300 DPI.
Cependant, si vous souhaitez afficher le code-barres à l'écran, vous devrez redimensionner l'image avec imagecopyresampled().

Barcode Bakery Supporte

Supporte
Encodage Caractères, Chiffres, Binaires Disponible
Encodage sur plusieurs codes (Structured Append) Disponible
Extended Channel Interpretation (Arabe, Hebreux, etc.) Disponible
Modes 2 et 3 pour symbole de tri de destination Disponible
Modes 0 et 1 *
Specifique à la librarie .NET
.NET 2.0+ Disponible
* Modes 0 et 1 ne sont plus supportés par la norme elle-même.