Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf ·...

23
Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique 4D-200109-29-FR Version 1 Date 1 Septembre 2001 Résumé Cette note vous propose une technique afin de créer, d’afficher et d’imprimer des codes barres tenant compte de la symbologie de codes standards. Nous vous proposons de détailler les codes courants : le EAN 13, le EAN 39, le EAN 128 , l’UPC et l'ISBN 4D Notes techniques Copyright © 1985-2003 4D SA - Tous droits réservés Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible. Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers. Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence. Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA. 4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA. Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation. Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc. Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc. 4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA. XTND Copyright 1992-2002 © 4D SA. Tous droits réservés. XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc. Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. 1 / 23

Transcript of Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf ·...

Page 1: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Code à barresParOlivier DESCHANELS, Responsable Programme 4D S.A.Note technique 4D-200109-29-FRVersion 1

Date 1 Septembre 2001

RésuméCette note vous propose une technique afin de créer, d’afficher et d’imprimer des codes barres tenant comptede la symbologie de codes standards. Nous vous proposons de détailler les codes courants : le EAN 13, leEAN 39, le EAN 128 , l’UPC et l'ISBN

4D Notes techniquesCopyright © 1985-2003 4D SA - Tous droits réservés

Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte.L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leursutilisateurs que des tiers.

Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manièreengager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés parailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentationne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément auxtermes de cette licence.Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y comprispar photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pourd'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4DSA.4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont desmarques enregistrées de 4D SA.Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux deApple Computer,Inc.Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, SecretCommercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétairesrespectifs.

1 / 23

Page 2: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Les clés des codes barres dans 4D

Introduction

Le code-barres est une technique d'identification automatique qui offre de nombreux avantagesdans un grand nombre de traitements et d’applications : gestion de stock, gestion de production,suivi de colis, tracabilité, bibliothèque, photothèque, etc...Cette note, vous propose une technique afin de créer, d’afficher et d’imprimer des codes barrestenant compte de la symbologie de codes standards. Dans la mesure où la mise en oeuvre descodes barres est directement liées à la symbologie utilisée ou imposée par l’activité, nous vousproposons de détailler 4 codes courants : le EAN (European Article Numbering) 39, le EAN 128, l’UPC(Universal product coding) et le EAN 13.La technique utilisée est similaire dans les quatre cas pour lesquels, somme toute, le plus difficilesemble la création de deux images de 1 pixel sur 1 pixel dans la bibliothèque d’images.6

Le principe

Imaginés dès le début des années 50 et développés dans les années 70, les codes barres sont chargésd’identifier des objets, des produits à l’aide d’une succession de barres et d’espaces.exemple : UPC (UNIVERSAL PRODUCT CODING - 1973)Le principe repose sur des juxtapositions de une ou plusieurs barres noires avec une ou plusieursbarres blanches. Chaque jeu de barres juxtaposées, correspond à un caractère de la chaîne à coder.Les associations d’un caractère à un jeu de barres sont décrites dans les symbologies de chacundes codes.Une symbologie définit les caractéristiques d'encodage et de présentation du code qui répond àdes besoins de normalisation. Certains codes à barres sont uniquement numériques (UPC, EAN, 2parmi 5 entrelacé), d'autres ont une longueur fixe (l'UPC-A est constitué de 12 chiffres, l'UPC-E de6 chiffres, l'EAN-13 et l'EAN-8 sont formés respectivement de 13 et de 8 chiffres). Certains codes àbarres peuvent utiliser des caractères alphanumériques (Code 93, Code 128 et Code 39) et intégrerdes caractères de contrôle.Le principe revient donc à juxtaposer un ou plusieurs pixels noirs avec un ou plusieurs pixelsblancs dans une image et de redimensionner cette image en hauteur, afin qu’elle soit conformeaux normes courantes.

Création des images dans la bibliothèque.

Pour stocker deux images de 1 pixel, dans la bibliothèque d’images de 4D, il suffit de créer deuximages vides à l’aide du boutons "Créer" de l’éditeur de la bibliothèque.Dans les attributs des images, nous nommons successivement nos images, "pixel_noir" et"pixel_blanc". Nous leur attribuons chacune une largeur et une hauteur de 1 point.A l’aide de l’outil "Couleur de fond" , nous colorions chaque images avec la couleur adéquate.

2 / 23

Page 3: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Illustration 1 :Attributs d’une image de la bibliothèque d’images 4D

Le plus difficile est fait, nous pouvons passer à la lecture et à l’analyse des symbologies pour con-cevoirnos diverses fonctions.

Code à barres EAN 39

Le code EAN 39 est un code alphanumérique permettant de coder 43 caractères, c'est-à-dire leschiffres de 0 à 9, les lettres majuscules de A à Z, les symboles suivants : _ . * $ / % +, ycompris l'espace , plus un caractère particulier de début et fin de message.Le symbole en code EAN 39 se compose de :1) Un espace blanc2) Le caractère de début de message3) Les caractères du message proprement dit4) Le caractère de fin de message5) Un espace blanc.Chaque caractère concerné par la codification, est représenté par neuf éléments : 5 barres en positionpaire + 4 espaces en position impaire. Parmi ces éléments 2 barres et 1 espace sont plus larges que les 6autres. Cette structure avec 3 éléments plus larges sur les 9 éléments de base, donne sonnom au code EAN 39.Dans certains cas d’utilisation, la codification est complétée par un caractère de contrôle. Cecaractère correspond au modulo 43 de la somme des valeurs des caractères de la chaîne à coder.Les caractères pris en compte dans l’EAN 39, sont ordonnées et prennent la valeur de leur rangdans cet ordonnancement :

Caractère Valeur

0 0

3 / 23

Page 4: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

1 1

2 2

... ...

A 10

... ...

Z 35

tiret 36

point 37

space 38

* 39

$ 40

/ 41

+ 42

% 43

Comment calculer la largeur d'un symbole en code 39 ?La longueur d'un code EAN 39, peut être déterminée par la formule suivante, en connaissant lalargeur L , de la barre la plus étroite avec un multiplicateur R compris entre 2 et 3 pour définir lesbarres épaisses.

Paramètres :M1, M2 - Marges. Celles-ci doivent être de 6 mm ou 10 fois la largeur de l’élément le plus étroit.N - le nombre de caractères à coder.16 x L - la Largeur des caractères de données, incluant les espaces entre les caractères31 x L - la Largeur des caractères d'arrêt et le début. Incluant espaces entre le caractère de début etles premières données.16 x L - Largeur du caractère de contrôle facultatif.Largeur impression = N(3LR+7L)+6RN+13N+(3RN+7N)+ M1+M2

Implémentation de la fonction EAN_EditBarcode_39Les codifications de chacun des 43 caractères, sont conservées dans une énumération"Characters_set_39" qui tient compte de l’ordre établi.L’utilisation d’une énumération, nous permet de prendre en compte un numéro de référencepour chaque élément de l’énumération. Cette référence correspondra à la valeur ASCII du caractère

4 / 23

Page 5: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

codé.Etapes de la fonction :1) reconnaissance de la chaîne et traitement des caractères les uns après les autres,2) identification du caractère à l’aide de son code ASCII,3) recherche des 9 éléments du code correspondant au caractère,4) prise en compte de la position (paire ou impaire) du caractère pour sélectionner le pixelnoir ou le pixel blanc,5) prise en compte de la valeur de l’élément (0 ou 1) pour gérer l’épaisseur de la barre,6) prise en compte d’un éventuel caractère de contrôle

Fonction EAN_EditBarcode_39 :

C_ENTIER LONG($0;$error) `erreur

C_POINTEUR($1;$pict_BarCode) `pointeur sur image code barreC_TEXTE($2) `texte à transcrireC_TEXTE($chaine_saisie;$vCode_Alpha) `chaine de récupérationC_IMAGE($pixel_noir) `pixel noir issu bibliothèqueC_IMAGE($pixel_blanc) `pixel blanc issu bibliothèqueC_ENTIER LONG($Modulo;$Somme) `check sumC_ENTIER LONG($trouve) `indice de tableauC_ENTIER LONG($j;$i) `compteurs de boucleC_IMAGE($image;$pixel) `image finale et barre pour constructionC_BOOLEEN($controle) `si il y a un caractère de contrôle à imprimer = ouiTABLEAU ENTIER LONG($tl_code;0)TABLEAU TEXTE($ta_code;0)Si (Longueur($chaine_saisie)>0) `si on a bien une chaine à coder LIRE IMAGE DANS BIBLIOTHEQUE(1000;$pixel_noir) LIRE IMAGE DANS BIBLIOTHEQUE(1001;$pixel_blanc) Si (Taille image($pixel_noir)>0) & (Taille image($pixel_blanc)>0) `les images existent t-elles ? `chargement de l' énumération ENUMERATION VERS TABLEAU("Characters_set_39";$ta_code;$tl_code) Si (Taille tableau($ta_code)>0) `les énumérations existent t-elles ? Boucle ($i;1;Longueur($chaine_saisie);1) `on boucle sur la longueur de la chaine à coder `on recherche le rang du caractère à l'aide de son code ascii $trouve:=Chercher dans tableau($tl_code;Code ascii(Majusc($chaine_saisie $i))) Si ($trouve>0) `si on a trouvé le rang $code:=$ta_code{$trouve} `récupération des 9 éléments du code Boucle ($j;1;9;1) `boucle pour interpréter les 9 éléments Si (($j/2)#($j\2)) `si c'est une position impaire $pixel:=$pixel_noir `on travaille avec le pixel noir Sinon $pixel:=$pixel_blanc `on travaille avec le pixel blanc Fin de si Si ($code $j="1") `si on a un code 1 alors plus épais $pixel:=$pixel*+3 Fin de si $image:=$image+$pixel `on ajoute notre barre courante à l'image finale Fin de boucle Fin de si $image:=$image+$pixel_blanc `on ajoute un espace blanc comme séparateur de caractère Si ($controle) `si on demande un caractère de contrôle $Somme:=$Somme+($trouve-1) `il y a un décalage de un entre le rang et la valeur réelle Fin de si Fin de boucle Si ($Somme>0) `si on demande un caractère de contrôle $Modulo:=($Somme/43)-1 `il faut retirer un pour avoir la valeur correspondant dans l'énumération $code:=$ta_code{$Modulo} `récupération des 9 éléments du code Boucle ($j;1;9;1) `boucle pour interprétéer les 9 éléments Si (($j/2)#($j\2)) `si c'est une position impaire $pixel:=$pixel_noir `on travaille avec le pixel noir

5 / 23

Page 6: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Sinon $pixel:=$pixel_blanc `on travaille avec le pixel blanc Fin de si Si ($code $j="1") `si on a un code 1 alors plus épais $pixel:=$pixel*+3 Fin de si $image:=$image+$pixel `on ajoute notre barre courante à l'image finale Fin de boucle Fin de si ` Si ($somme>0) $image:=$image*/30 `dimension de l'image $pict_BarCode->:=$image `attribution de l'image créée dans l'image affichée $error:=0 `on a pas d'erreur Sinon `erreur énumération absente ALERTE("Erreur de ressources énumération...") $error:=1 Fin de si Sinon `erreur images bibliothèque ALERTE("Erreur de ressources images...") $error:=2 Fin de si Sinon `erreur chaine de saisie ALERTE("La Chaine à coder est vide...") $error:=3Fin de si

$0:=$error

Code à barres EAN 128

Le code EAN 128, est un code alphanumérique permettant de coder 103 les caractères ASCII, encontinu. Chaque codification d’un caractère consiste à rapprocher 3 barres et 3 espaces dontl’ensemble correspond à la juxtaposition de 11 éléments. Une barre ou un espace peuvent être 1,2ou 3 éléments juxtaposés. Les barres sont toujours en position paire et les espaces en positionimpaire.Il existe 3 procédés pour coder une chaîne en EAN 128, selon la nature des caractères qui constituent lachaîne. Elles sont nommées respectivement code A, code B, code C.Code A : pour les chaînes avec majuscule uniquement,Code B: pour les chaînes alphanumériques avec majuscule et minuscules,Code C: uniquement pour les chaînes constituées de chiffres regroupés par paire.

La codification est complétée par un caractère de début, dépendant du procédé utilisé et d’uncaractère de fin commun au 3 méthodologies.Pour finir, la codification utilise un obligatoirement un caractère de contrôle. Le caractère de contrôlecorrespond au dernier nombre du modulo 103 de la somme des valeurs des caractères pondéréspar leur position.

6 / 23

Page 7: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Exemple avec la chaîne: DIMENSION

Les majuscules imposent l’utilisation du code A caractère de début : A , ce caractère n’est pas pris en comptedans le calcul du caractère de contrôle.

Transposition A D I M E N S I O N

Position (1) 1 2 3 4 5 6 7 8 9Valeur (2) 103 36 41 45 37 46 51 41 47 46Pondération (1)x(2) 36 82 135 148 230 306 287 376 414Cumul 103 139 221 356 504 734 1040 1327 1703 21172117Modulo 103 57

Car. de Contrôle 7

Chaîne finale : (Début A)DIMENSION(DC7)(STOP)

Implémentation de la fonction EAN_EditBarcode_128Les codifications de chacun des 103 caractères, sont conservées dans une énumération"Characters_set_128" qui tient compte de l’ordre établi. En complément, les 4 derniers item del’énumérations représentent des caractères de débuts et le caractères de fin. (cf annexe)

Dans le même esprit que le cas précédent, l’utilisation d’une énumération, nous permet de prendreen compte un numéro de référence pour chaque élément de l’énumération. Cette référencecorrespondra à la valeur ASCII du caractère codé. Pour les caractères de début et le caractère defin, stockés en fin d’énumération, nous attribuons des valeurs non significatives qui correspondentà l’ordre établi.

Etapes de la fonction :1) identification du type de codage A,B ou C et du caractère de début,2) calcul du caractère de contrôle,3) modification de la chaîne à coder avec ajout du caractère de début, du caractère de contrôleet du caractère de fin,4) reconnaissance de la chaîne et traitement des caractères les uns après les autres,5) identification du caractère à l’aide de son code ASCII,6) chargement des éléments du code correspondant au caractère,7) prise en compte de la position (paire ou impaire) de la section pour sélectionner le pixelnoir ou le pixel blanc,8) valorisation du pixel sélectionné en fonction de la valeur 1,2,3 ou 4.

7 / 23

Page 8: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Méthode EAN_EditBarcode_128

`Le code 128 est continu.

`Chaque élément du Code 128 consiste en 3 barreset 3 espaces.`Les barres et des espaces peuvent être 1, 2,3, ou 4 à la suite`La longueur totale de chaque élément est onze modules,`postion pair = espace`position impaire = barreC_ENTIER LONG($0) `erreurC_POINTEUR($1;$pict_BarCode) `pointeur sur image code barreC_TEXTE($2) `texte à transcrireC_TEXTE($chaine_saisie;$vCode_Alpha) `chaine de récupérationC_IMAGE($pixel_noir) `pixel noir issu bibliothèqueC_IMAGE($pixel_noir) `pixel blanc issu bibliothèqueC_ENTIER LONG($Modulo;$Somme) `check sumC_ENTIER LONG($trouve) `indice de tableauC_ENTIER LONG($j;$i) `compteurs de boucleTABLEAU ENTIER LONG($tl_code;0)TABLEAU TEXTE($ta_code;0)LIRE IMAGE DANS BIBLIOTHEQUE(1000;$pixel_noir)LIRE IMAGE DANS BIBLIOTHEQUE(1001;$pixel_blanc)$Modulo:=103$Somme:=$Modulo `modulo additionné initialementpour la somme$pict_BarCode:=$1$chaine_saisie:=$2Si (Longueur($chaine_saisie)>0)Si (Taille image($pixel_noir)>0) & (Taille image($pixel_blanc)>0)`chargement des patterns et des références`la référence = code ascii et le rang = la valeur pour le caractère référencéENUMERATION VERS TABLEAU("code2";$ta_code;$tl_code)`Un caractère de contrôle est obligatoire pour le Code 128.`Le caractère de contrôle est un modulo 103 somme des valeurs des caractères`pondérées par la position dans la chaine.`Le caractère de contrôle est calculé en additionnant la valeur pour le caractère`la valorisation débute à 0 -> la valeur est égale à rang dans énumération - 1`de début avec les produits de la valeur des caractères de message des temps leur` avec le caractère qui suit le caractère de début dans la première position.`Le caractère d'arrêt n'est pas inclus dans le calcul. ``Le résultat est divisé par 103 et le caractère qui correspond`au reste est le caractère de contrôle.Si (Taille tableau($ta_code)>0)`calcul du resteBoucle ($i;1;Longueur($chaine_saisie);1)`le code ascii est utilisé comme référence dans l'énumération`l'indice $trouve correspond au rang du caractère $i`dans la définition des patterns sa valeur sera rang de l’item moins 1.$trouve:=Chercher dans tableau($tl_code;Code ascii($chaine_saisie $i ))Si ($trouve>0)$Somme:=$Somme+(($trouve-1)*$i) `Pondération de la valeur par la position du caractèreFin de siFin de boucle`récupération du reste$Somme:=$Somme\$Modulo$vCode_Alpha:=$chaine_saisie`création de la chaine à coder$chaine_saisie:=Caractere(135)+$chaine_saisie+Caractere($tl_code{$Somme+1})+Caractere(138)`création de la chaine`appel des patterns pour chaque caractère (cf références)Boucle ($i;1;Longueur($chaine_saisie);1)$trouve:=Chercher dans tableau($tl_code;Code ascii($chaine_saisie $i ))Si ($trouve>0)$code:=$ta_code{$trouve}Boucle ($j;1;Longueur($code);1)Si (($j/2)#($j\2)) ` si on est pas en position pair$pixel:=$pixel_noir `alors c'est une barre

8 / 23

Page 9: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Sinon$pixel:=$pixel_blanc `sinon c'est un espaceFin de si$pixel:=$pixel*+(Num($code $j )) `on multiplie par la valeur •$j$pict_BarCode:=$pict_BarCode+$pixelFin de boucleFin de si$pict_BarCode:=$pict_BarCode+$pixel_blanc `Fin de boucle$chaine_saisie:=$vCode_Alpha$pict_BarCode:=$pict_BarCode*/30Sinon`erreur énumérationFin de siSinon`erreur image bibliothèqueFin de siSinon`erreur chaine de saisie

Fin de si

Code à barres UPC & EANLe code EAN est un code numérique pour les applications de la grande distribution, aux USA, cecode correspond au code UPC (Universal Product Code )Les codes UPC et EAN ont des points communs :1) traitement de données numériques uniquement (un caractère = un nombre),2) deux barres et deux espaces par caractère,3) sept modules par caractère ,4) quatre codes de niveau, une barre ou un espace peuvent être 1, 2, 3, ou 4 modules larges,5) un caractère de contrôle obligatoire,Les symboles EAN 13 codent 12 ou 8 chiffres, le cas le plus courant étant 12 caractères.La codification Universal Product Code inclus 3 modes de codification, A,D et E. Nous étudieronsla version A chargée de coder 12 caractères.

Exemple :

Code UPC ALes 12 caractères sont déterminés de telle façon que le premier caractère corresponde à un nombresystème représentant un contexte. Les 10 suivants représentent les données codées, le dernierest le caractère de contrôle. Des séparateurs indiquent le début, le centre et la fin du codage.

9 / 23

Page 10: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

La symbologie UPC impose un mécanisme particulier pour la représentation des nombres. Chaquenombre possède une codification de type binaire sur 7 éléments, où : le 1 correspond à unebarre noire et le 0 à une barre blanche. Cette symbologie est particulière dans le sens où elle diffèreselon la position du nombre. Si le nombre est dans la section de droite, les symboles binairesseront inversés par rapport à ceux utilisés dans la section de gauche.

10 / 23

Page 11: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Codification des nombres selon le code UPC :

gauche nombre droite

0001101 0 1110010

0011001 1 1100110

0010011 2 1101100

0111101 3 1000010

0100011 4 1011100

0110001 5 1001110

0101111 6 1010000

0111011 7 1000100

0110111 8 1001000

0001011 9 1110100

Calcul du caractère de contrôleLes étapes pour calculer et vérifier le code de contrôle sont les suivantes :1) assigner successivement la position impaire et paire aux caractères en partant de la droite.(Toujours considérer le dernier caractère de droite comme un caractère de positionimpaire),2) additionner les valeurs des caractères de position impaire et multiplier le résultat par 3,3) additionner les valeurs des caractères de position paire,4) additionner les deux résultats précédents,5) soustraire ce dernier résultat au multiple de 10 immédiatement supérieur,6) le caractère de contrôle est le résultat de la soustraction,

11 / 23

Page 12: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Exemple :

chaine de saisie 0 7 5 6 7 8 1 6 4 1 2

position imp pair imp pair imp pair imp pair imp pair imp

pondération 3 1 3 1 3 1 3 1 3 1 3

calcul 0 7 15 6 21 8 3 6 12 1 6

La somme est 85. Le multiplicateur de 10 immédiatement supérieur est 90 donc le caractère de contrôle est 5.

Implémentation de la fonction EAN_EditBarcode_UPC_ALa codifications des 9 nombres, est conservée dans une énumération "Characters_set_UPCa".Cette énumération ne prend en compte que la symbologie de la section gauche. Les traitementsconcernant la section droite, utiliseront les mêmes éléments en inversant le traitement.

C_ENTIER LONG($0;$error) `erreur

C_POINTEUR($1;$pict_BarCode) `pointeur sur image code barreC_TEXTE($2) `texte à transcrireC_TEXTE($Chaine_A_coder) `chaîne de récupérationC_IMAGE($pixel_noir) `pixel noir issu bibliothèqueC_IMAGE($pixel_blanc) `pixel blanc issu bibliothèqueC_ENTIER LONG($Modulo;$Somme) `check sumC_ENTIER LONG($trouve) `indice de tableauC_ENTIER LONG($j;$i) `compteurs de boucleC_IMAGE($image;$pixel) `image finale et barre pour constructionC_ENTIER LONG($codesystem) `contexteTABLEAU ENTIER LONG($tl_code;0)TABLEAU TEXTE($ta_code;0)$pict_BarCode:=$1$Chaine_A_coder:=$2Si (Longueur($Chaine_A_coder)=10) `si on a bien une chaine à coder avec 10 caractèresLIRE IMAGE DANS BIBLIOTHEQUE(1000;$pixel_noir)LIRE IMAGE DANS BIBLIOTHEQUE(1001;$pixel_blanc)Si (Taille image($pixel_noir)>0) & (Taille image($pixel_blanc)>0) `les images existent-elles ?`chargement de l'énumérationENUMERATION VERS TABLEAU("Characters_set_UPCa";$ta_code)Si (Taille tableau($ta_code)>0) `les énumérations existent-elles ?$Code_system:=Num(Sous chaine($Chaine_A_coder;1;1)) `code = contexte d'utilisation en fct normeSi ($Code_system<8) `le code system qui doit être compris entre 0 et 7 (cf normes UPC)$image:=$pixel_blanc*+17 `on agrandit horizontalement pour la marge$image2:=$pixel_blanc*+17 `idem, cette image sera une "copie de travail"$image:=$image+$pixel_noir+$pixel_blanc+$pixel_noir `séparateurs de début$code:=$ta_code{$Code_system+1} `récupération les éléments concernant le code systèmeBoucle ($j;1;7;1) `mise à jour de l'image pour les 7 élémentsSi ($code $j ="0") `si c'est un zéro = barre blanche$image:=$image+$pixel_blancSinon$image:=$image+$pixel_noirFin de siFin de boucle$image2:=$image `mise à jour de l'image complémentaireBoucle ($i;2;6;1) `création de la section de gauche$code:=$ta_code{Num($Chaine_A_coder $i )+1}Boucle ($j;1;7;1)Si ($code $j ="0")$image:=$image+$pixel_blancSinon

12 / 23

Page 13: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

$image:=$image+$pixel_noirFin de si$image2:=$image2+$pixel_blanc `MAJ de l'image complémentaire mais fond blancFin de boucleFin de boucle`création des séparateurs centraux$image:=$image+$pixel_blanc+$pixel_noir+$pixel_blanc+$pixel_noir+$pixel_blanc$image2:=$image2+$pixel_blanc+$pixel_noir+$pixel_blanc+$pixel_noir+$pixel_blancBoucle ($i;7;11;1) `création de la section de droite$code:=$ta_code{Num($Chaine_A_coder $i )+1}Boucle ($j;1;7;1)Si ($code $j ="0")$image:=$image+$pixel_noir `içi on inverse si = à zéro alors barre noire cf symbologie du codeSinon$image:=$image+$pixel_blanc `içi on inverse si = à zéro alors barre noire cf symbologie du codeFin de si$image2:=$image2+$pixel_blanc `MAJ de l'image complémentaire mais fond blancFin de boucleFin de boucle`calcul du caractère de contrôle$check:=0Boucle ($i;11;1;-1)Si (($i/2)#($i\2))$check:=$check+(Num($Chaine_A_coder $i )*3)Sinon$check:=$check+(Num($Chaine_A_coder $i ))Fin de siFin de boucle$check_S:=Chaine($check)$check:=10-Num(Sous chaine($check_s;Longueur($check_s)))`codification du caractère de contrôle$code:=$ta_code{$check+1}Boucle ($j;1;7;1) `ici on prend l'inverse...on est à droiteSi ($code $j ="0")$image:=$image+$pixel_noir$image2:=$image2+$pixel_noir `MAJ de l'image complémentaireSinon$image:=$image+$pixel_blanc$image2:=$image2+$pixel_blanc `MAJ de l'image complémentaireFin de siFin de boucle`création des séparateurs de droite$image:=$image+$pixel_noir+$pixel_blanc+$pixel_noir$image2:=$image2+$pixel_noir+$pixel_blanc+$pixel_noir$image:=$image*/40 `agrandissement vertical de 40%$image2:=$image2*/5 `agrandissement vertical de 5%$image:=$image/$image2 `placement de l'image 2 en dessous de l'image 1`ajout du texte avec 4D CHART$texte_bas:=Chaine($Codesystem)+(" "*9)+Sous chaine($Chaine_A_coder;2;5)+(" "*4)+Sous ¬Chaine($Chaine_A_coder;7;5)+(" "*9)+Chaine($check)$chart:=ch_Hors ecran$texte:=ch_Creer texte ($chart;0;0;120;12;$texte_bas)ch_FIXER TEXTE ($chart;$texte;ch_Numero de police ("Helvetica");10;Normal ;¬ch_Index vers couleur (16);0)$image_texte:=ch_Zone vers image ($chart;$texte) `texte chart vers imagech_DETRUIRE HORS ECRAN ($chart) `récupération mémoire$image_texte:=($image_texte/41) `déplacement vertical de 41 pixels$image:=$image & $image_texte `superposition des images$pict_BarCode->:=$imageSinon`erreur sur le code system qui doit être compris entre 0 et 7ALERTE("Erreur : le code Système est Faux..."+Caractere(13)+"Se reporter aux normes UPC.")$error:=-1Fin de siSinon`erreur énumération absenteALERTE("Erreur de ressources énumération...")$error:=1Fin de si

13 / 23

Page 14: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Sinon`erreur images bibliothèqueALERTE("Erreur de ressources images...")$error:=2Fin de siSinon`erreur chaine de saisieALERTE("La Chaine à coder doit avoir 10 caractères numériques...")$error:=3Fin de si

$0:=$error

Code EAN 13La numérotation de code système, est la principale différence entre le code EAN 13 et l’UPC A.Dans la codification EAN 13, le code système, qui représente le pays d’origine, dans la plupart descas, est codé sur 2 caractères voir 3 caractères.Consulter les annexes pour connaître la liste de ces codes systèmes.La seconde particularité de l’EAN 13 est la codification des caractères situés dans la section gauchedu code produit. Cette codification est différente selon "le statut" pair ou impair du caractère.Nous utilisons le terme "statut" à la place de "position" parce que selon la symbologie de l’EAN 13,il n’est pas sufficsant de considérer uniquement la position du caractère pour définir s’il est detype impair ou pair. Cette parité est définie en fonction de la valeur du premier caractère. Notonsque le second caractère est toujours considéré avec une parité impaire.Un tableau de références, détermine la parité des éléments de la section gauche en fonction dupremier caractère.

14 / 23

Page 15: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

tableau 1 : Parité des caractères de la section gauche

1 car 2e car Code produit

Car. 1 Car. 2 Car. 3 Car. 4 Car. 5

0 Impair Impair Impair Impair Impair Impair1 Impair Impair pair Impair pair pair2 Impair Impair pair pair Impair pair3 Impair Impair pair pair pair Impair4 Impair pair Impair Impair pair pair5 Impair pair pair Impair Impair pair6 Impair pair pair pair Impair Impair7 Impair pair Impair pair Impair pair8 Impair pair Impair pair pair Impair

9 Impair pair pair Impair pair Impair

En complément de la codification des nombres, selon la symbologie EAN 13, utilise un secondtableau qui indique la représentation graphique en fonction de la parité du caractère et de la sectiondans laquelle il se situe.

tableau 2: Codification des nombres selon le code EAN 13 :

Caractère Section gauche section gauche section droiteparité impaire parité paire paire & impaire

0 0001101 0100111 1110010

1 0011001 0110011 1100110

2 0010011 0011011 1101100

3 0111101 0100001 1000010

4 0100011 0011101 1011100

5 0110001 0111001 1001110

6 0101111 0000101 1010000

7 0111011 0010001 1000100

8 0110111 0001001 1001000

9 0001011 0010111 1110100

15 / 23

Page 16: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Calcul du caractère de contrôle

Les étapes pour calculer et vérifier le code de contrôle sont identiques à celles du code UPC.1) assigner successivement la position impaire et paire aux caractères en partant de la droite.(Toujours considérer le dernier caractère de droite comme un caractère de positionimpaire),2) additionner les valeurs des caractères de position impaire et multiplier le résultat par 3,3) additionner les valeurs des caractères de position paire,4) additionner les deux résultats précédents,5) soustraire ce dernier résultat au multiple de 10 immédiatement supérieur,le caractère de contrôle est le résultat de la soustraction,Détermination des parités des caractères de la section gauche.Pour déterminer la parité des caractères de la section gauche, nous utilisons une énumération,"Odd_Even", structurée selon le tableau 1. Les 0 représentent une parité impaire et les 1, la paritépaire.

Implémentation de la fonction EAN_EditBarcode_13

C_ENTIER LONG($0;$error) `erreur

C_POINTEUR($1;$pict_BarCode) `pointeur sur image code barreC_TEXTE($2) `texte à transcrireC_TEXTE($chaine_saisie) `chaine de récupérationC_IMAGE($pixel_noir) `pixel noir issu bibliothèqueC_IMAGE($pixel_noir) `pixel blanc issu bibliothèqueC_ENTIER LONG($Modulo;$Somme) `check sumC_ENTIER LONG($trouve) `indice de tableauC_ENTIER LONG($j;$i) `compteurs de boucleC_ENTIER LONG($longueur_chaine) `longueur de chaine à coderC_ALPHA(3;$codesystem) `le code system (pays d'origine)

TABLEAU ENTIER LONG($tl_code;0)

TABLEAU TEXTE($ta_code;0)

TABLEAU TEXTE($ta_odd_even;0) `masque des positions impaires$pict_BarCode:=$1$Chaine_A_coder:=$2$longueur_chaine:=Longueur($Chaine_A_coder)Si ($longueur_chaine#12) & ($longueur_chaine#13)ALERTE("Erreur de saisie, "+Caractere(13)+"la Longueur de la Chaine ¬doit être de 12 ou 13 caractères...")$error:=-1Sinon$error:=EAN_tester_code_System_13Fin de siSi ($error=0)TABLEAU ALPHA(7;$ta_CaracteSet;20)ENUMERATION VERS TABLEAU("Characters_set_13";$ta_CaracteSet)ENUMERATION VERS TABLEAU("odd_even";$ta_odd_even)Si ((Taille tableau($ta_CaracteSet)=0) | (Taille tableau($ta_odd_even)=0))ALERTE("Erreur de ressources dans les énumérations...")$error:=1Fin de siSi ($error=0)TABLEAU ALPHA(7;$ta_left_hand;10)TABLEAU ALPHA(7;$ta_left_even_hand;10)

16 / 23

Page 17: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

TABLEAU ALPHA(7;$ta_right_hand;10)LIRE IMAGE DANS BIBLIOTHEQUE(1000;$pixel_noir)LIRE IMAGE DANS BIBLIOTHEQUE(1001;$pixel_blanc)Si (Taille image($pixel_noir)=0) & (Taille image($pixel_blanc)=0)ALERTE("Erreur de ressources bibliothèque image...")$error:=2Fin de siFin de siSi ($error=0)$image:=$pixel_blanc*+17$image2:=$pixel_blanc*+17Boucle ($i;1;10)$ta_left_hand{$i}:=$ta_CaracteSet{$i}$ta_right_hand{$i}:=$ta_CaracteSet{$i+10}$ta_left_even_hand{$i}:=$ta_CaracteSet{$i+20}Fin de boucle$Code_country:=""`left guard bars -> 101$image:=$image+$pixel_noir+$pixel_blanc+$pixel_noir$image2:=$image2+$pixel_noir+$pixel_blanc+$pixel_noir`the countryAu cas ou: ($longueur_chaine=13)$Code_country:=Sous chaine($Chaine_A_coder;1;3)$Code_manufactury:=Sous chaine($Chaine_A_coder;4): ($longueur_chaine=12)$Code_country:=Sous chaine($Chaine_A_coder;1;2)$Code_manufactury:=Sous chaine($Chaine_A_coder;3): ($longueur_chaine<12)$Code_country:=""Fin de cas`le caractère qui détermine la parité des éléments de la section gauche$odd_even:=Num($Chaine_A_coder 1 )+1Si ($Code_country#"")`calcul du caractère de contrôle$check:=0`calcul du caractère de contrôle sur 12 caractères`comme le dernier caractère est considéré comme position impaire`on inverse si la position est paire -> on le considère impaire$check:=0Boucle ($i;12;1;-1)Si (($i/2)#($i\2)) `il est en position impaire$check:=$check+(Num($Chaine_A_coder $i )) `calcul parité paireSinon$check:=$check+(Num($Chaine_A_coder $i )*3) `calcul parité impaireFin de siFin de boucle$check_S:=Chaine($check)$check:=10-Num(Sous chaine($check_s;Longueur($check_s))) `10-extract the last number$Chaine_A_coder:=$Chaine_A_coder+Chaine($check)$codealpha:=Sous chaine($Chaine_A_coder;2)$image:=$image | $image$image2:=$image2 | $image2`Left Hand barsBoucle ($i;1;6;1)$digit:=Num($codealpha $i )+1Si ($ta_odd_even{$odd_even}•$i ="0") `ODD -> IMPAIREBoucle ($rang;1;7;1)Si ($ta_left_hand{$digit}•$rang ="0")$image:=$image+$pixel_blancSinon$image:=$image+$pixel_noirFin de si$image2:=$image2+$pixel_blanc$image:=$image | $image$image2:=$image2 | $image2Fin de boucleSinon `-> EVEN PARITYBoucle ($rang;1;7;1)

17 / 23

Page 18: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Si ($ta_left_even_hand{$digit}•$rang ="0")$image:=$image+$pixel_blancSinon$image:=$image+$pixel_noirFin de si$image2:=$image2+$pixel_blanc$image:=$image | $image$image2:=$image2 | $image2Fin de boucleFin de siFin de boucle`center guard bars -> 01010$image:=$image+$pixel_blanc+$pixel_noir+$pixel_blanc+$pixel_noir+$pixel_blanc$image2:=$image2+$pixel_blanc+$pixel_noir+$pixel_blanc+$pixel_noir+$pixel_blanc`Right Hand barsBoucle ($i;7;12;1)$digit:=Num($codealpha $i )+1Boucle ($rang;1;7;1)Si ($ta_right_hand{$digit}•$rang ="0")$image:=$image+$pixel_blancSinon$image:=$image+$pixel_noirFin de si$image2:=$image2+$pixel_blancFin de boucleFin de boucle`right guard bars -> 101$image:=$image+$pixel_noir+$pixel_blanc+$pixel_noir$image2:=$image2+$pixel_noir+$pixel_blanc+$pixel_noir$image:=$image*/40$image2:=$image2*/5$image:=$image/$image2$texte_bas:=Sous chaine($Code_country;1;1)+(" "*5)+Sous chaine($Chaine_A_coder;2;6)¬+(" "*5)+Sous chaine($Chaine_A_coder;8)+(" "*5)$chart:=ch_Hors ecran$texte:=ch_Creer texte ($chart;0;0;120;12;$texte_bas)ch_FIXER TEXTE ($chart;$texte;ch_Numero de police ("Helvetica");10;Normal ;¬ch_Index vers couleur (16);0)$image_texte:=ch_Zone vers image ($chart;$texte)ch_DETRUIRE HORS ECRAN ($chart)$image_texte:=($image_texte/41)$image:=$image & $image_texte$pict_BarCode->:=$imageFin de siFin de siFin de si

Fin de si

Particularité du code ISBN ( International Standard Book Number)Le code ISBN, destinée aux éditeurs, utilise la symbologie et la codification EAN 13. Il correspondà une chaîne de 9 caractères, à laquelle on ajoute un caractère de contrôle.Le code est divisé en 4 parties distinctes.

Exemples:Le livre "4D 6.7 Expert" : 2 - 212 - 09163 - X où :1) 2 représente la langue ou le pays d’origine,2) 212 correspond à l’éditeur,3) 09163 un numéro d’ordre interne à l’éditeur,4) X est le caractère de contrôle,Pour créer le code barre du code ISBN, nous utilisons une méthodologie identique, au code EAN13, si ce n’est que le code système est toujours 978 dans le cas de l’ISBN.

18 / 23

Page 19: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Dans le cas de l’exemple précédent, devons alors coder la chaîne suivante : 978 2212 09163

Calcul du caractère de contrôle du code ISBNLe caractère de contrôle est calculé à partir de la somme des 9 valeurs, pondérées chacune, par unnombre incrémenté de 1 en débutant à 2 pour le dernier caractère de la chaîne.La somme est ensuite divisée par 11. Le caractère de contrôle est le résultat de la soustraction 11moins le reste de la division . Dans le cas où le résultat de la soustraction est 10, le caractère decontrôle attribué est la lette "X".

ISBN 2 2 1 2 0 9 1 6 3

Multiplicateurs 10 9 8 7 6 5 4 3 2

Valeurs 20 18 8 14 0 45 4 18 6

Cumul 20 38 46 60 60 105 109 127 133

modulo (Cumul/11) 1

Résultat soustraction 10

Annexes

Codification et valorisation des caractères pour la codification EAN 39.

Caractères Barres Valeur

0 000110100 01 100100001 12 001100001 23 101100000 34 000110001 45 100110000 56 001110000 67 000100101 78 100100100 89 001100100 9A 100001001 10B 001001001 11C 101001000 12D 000011001 13E 100011000 14F 001011000 15G 000001101 16

19 / 23

Page 20: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

H 100001100 17I 001001100 18J 000011100 19K 100000011 20L 001000011 21M 101000010 22N 000010011 23O 100010010 24P 001010010 25Q 000000111 26R 100000110 27S 001000110 28T 000010110 29U 110000001 30V 011000001 31W 111000000 32X 010010001 33Y 110010000 34Z 011010000 35- 010000101 36. 110000100 37SPACE 011000100 38* 010010100 N C$ 010101000 39/ 010100010 40+ 010001010 41

% 000101010 42

Codification et valorisation des caractères pour la codification EAN 128

Val Code A Code B Code C B S B S B S

0 SPACE SPACE 0 2 1 2 2 2 21 ! ! 1 2 2 2 1 2 22 " " 2 2 2 2 2 2 13 # # 3 1 2 1 2 2 34 $ $ 4 1 2 1 3 2 25 % % 5 1 3 1 2 2 26 & & 6 1 2 2 2 1 37 ''7 1 2 2 3 1 28 ( ( 8 1 3 2 2 1 29 ) ) 9 2 2 1 2 1 310 * * 10 2 2 1 3 1 2

20 / 23

Page 21: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

11 + + 11 2 3 1 2 1 212 , , 12 1 1 2 2 3 213 - - 13 1 2 2 1 3 214 . . 14 1 2 2 2 3 115 / / 15 1 1 3 2 2 216 0 0 16 1 2 3 1 2 217 1 1 17 1 2 3 2 2 118 2 2 18 2 2 3 2 1 119 3 3 19 2 2 1 1 3 220 4 4 20 2 2 1 2 3 121 5 5 21 2 1 3 2 1 222 6 6 22 2 2 3 1 1 223 7 7 23 3 1 2 1 3 124 8 8 24 3 1 1 2 2 225 9 9 25 3 2 1 1 2 226 : : 26 3 2 1 2 2 127 ; ; 27 3 1 2 2 1 228 < < 28 3 2 2 1 1 229 = = 29 3 2 2 2 1 130 > > 30 2 1 2 1 2 331 ? ? 31 2 1 2 3 2 132 @ @ 32 2 3 2 1 2 133 A A 33 1 1 1 3 2 334 B B 34 1 3 1 1 2 335 C C 35 1 3 1 3 2 136 D D 36 1 1 2 3 1 337 E E 37 1 3 2 1 1 338 F F 38 1 3 2 3 1 139 G G 39 2 1 1 3 1 340 H H 40 2 3 1 1 1 341 I I 41 2 3 1 3 1 142 J J 42 1 1 2 1 3 343 K K 43 1 1 2 3 3 144 L L 44 1 3 2 1 3 145 M M 45 1 1 3 1 2 346 N N 46 1 1 3 3 2 147 O O 47 1 3 3 1 2 148 P P 48 3 1 3 1 2 149 Q Q 49 2 1 1 3 3 150 R R 50 2 3 1 1 3 151 S S 51 2 1 3 1 1 352 T T 52 2 1 3 3 1 153 U U 53 2 1 3 1 3 154 V V 54 3 1 1 1 2 355 W W 55 3 1 1 3 2 156 X X 56 3 3 1 1 2 1

21 / 23

Page 22: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

57 Y Y 57 3 1 2 1 1 358 Z Z 58 3 1 2 3 1 159 [ [ 59 3 3 2 1 1 160 \ \ 60 3 1 4 1 1 161 ] ] 61 2 2 1 4 1 162 ^ ^ 62 4 3 1 1 1 163 _ _ 63 1 1 1 2 2 464 NU 64 1 1 1 4 2 265 SH a 65 1 2 1 1 2 466 SX b 66 1 2 1 4 2 167 EX c 67 1 4 1 1 2 268 ET d 68 1 4 1 2 2 169 EQ e 69 1 1 2 2 1 470 AK f 70 1 1 2 4 1 271 BL g 71 1 2 2 1 1 472 BS h 72 1 2 2 4 1 173 HT i 73 1 4 2 1 1 274 LF j 74 1 4 2 2 1 175 VT k 75 2 4 1 2 1 176 FF l 76 2 2 1 1 1 477 CR m 77 4 1 3 1 1 178 SO n 78 2 4 1 1 1 279 SI o 79 1 3 4 1 1 180 DL p 80 1 1 1 2 4 281 D1 q 81 1 2 1 1 4 282 D2 r 82 1 2 1 2 4 183 D3 s 83 1 1 4 2 1 284 D4 t 84 1 2 4 1 1 285 NK u 85 1 2 4 2 1 186 SY v 86 4 1 1 2 1 287 EB w 87 4 2 1 1 1 288 CN x 88 4 2 1 2 1 189 EM y 89 2 1 2 1 4 190 SB z 90 2 1 4 1 2 191 EC { 91 4 1 2 1 2 192 FS 92 1 1 1 1 4 393 GS } 93 1 1 1 3 4 194 RS ~ 94 1 3 1 1 4 195 US DEL 95 1 1 4 1 1 396 FNC 3 FNC 3 96 1 1 4 3 1 197 FNC 2 FNC 2 97 4 1 1 1 1 398 SHIFT SHIFT 98 4 1 1 3 1 199 CODE C CODE C 99 1 1 3 1 4 1100 CODE B FNC 4 CODE B 1 1 4 1 3 1101 FNC 4 CODE A CODE A 3 1 1 1 4 1102 FNC 1 FNC 1 FNC 1 4 1 1 1 3 1

22 / 23

Page 23: Code à barres Résumé 4D Notes techniquesdownload.4d.com/.../NT/2001/200109-29-Codebarres.pdf · Code à barres Par Olivier DESCHANELS, Responsable Programme 4D S.A. Note technique

Début103 CODE A 2 1 1 4 1 2104 CODE B 2 1 1 2 1 4105 CODE C 2 1 1 2 3 2Fin

106 STOP 2 3 3 1 1 1 2

Codification des principaux pays d’origine utilisé dans le code ISBN0 English ) (UK, US, Australia, NZ, Canada,1 English ) South Africa, Zimbabwe)2 French (France, Belgium, Canada, Switzerland)3 German (Germany, Austria, Switzerland)4 Japan5 USSR7 China84 Spain87 Denmark88 Italian (Italy, Switzerland)91 Sweden92 International

Références complémentaireshttp://www.barcodeisland.com/symbolgy.phtmlhttp://www.adams1.com/pub/russadam/barcode1.html

23 / 23