Mot exact Résultats par page

Index des mots-clés

AGENDA PERSONNEL
ALBUM PHOTO (Script)
ANTI SPAM
APICULTURE
BOISSONS (Recettes)
BREDELE
C++
CADRE
CHARLOTTE AUX FRUITS
CODAGE ADRESSES MAIL
CODE 2 DE 5 ENTRELACE
CODE 3 DE 9
CODE 128
CODE PDF417
CODES BARRE
CODE POSTAL
CODES VIDEOTEXT
CONFITURES
CONGOLAIS
CONSERVES (Recettes)
CORNICHONS AU VINAIGRE
COUARAIL
CUISINE (Bases)
CYBERMUT
DADANT
DATAMATRIX
DDE
DESSERTS (Recettes)
DOUBLE NAT
DYNDNSUPDATE
EAN 13
EAN 128
ELECTRONIQUE
ENTREES (Recettes)
ENVOI DE SMS
ESPACE MEMBRE
EURO
EXEMPLES VB6
FAVORIS
FONCTIONS
FONCTIONS EN C++
GUACAMOLE
IMPRIMANTES RESEAUX
INSTANCE UNIQUE
KIT VB4
LANGSTROTH
LEGUMES (Recettes)
MADELEINES
MAISONS
MAQUEREAUX AU VIN BLANC
MAQUEREAUX (Rillettes)
NMEA
NOUGATINE
PAIN
PDF417
PHP
PIC
PLANS DE MAISON
PATISSERIE (Bases)
PLANTEUR
PLATS COMPLETS (Recettes)
POISSONS (Recettes)
PROCEDURES
PROGRAMMATION
RECETTES DE CUISINE
RESSOURCES RESEAUX
R.I.B.
ROUTINES
RUCHE
SALADES (Recettes)
SAUMON EN CROUTE
SCRIPTS
SITES
SLICE
SMS
SOUPE DE COURGE
TABLE PERIODIQUE
TATIN (Tarte)
USB
VIANDES (Recettes)
VIDEOTEXT
VISUAL BASIC
VOIRNOT
WNTIPCFG

Mot exact Résultats par page
I
N
D
E
X
 

Le code PDF417

English version
Ce code fait partie de la famille des codes Ă  2 dimensions, c'est en fait un code de plusieurs lignes qui peut encoder jusqu'Ă  2700 octets d'oĂą son nom de "Portable Document File". L'encodage se fait en deux Ă©tapes : tout d'abord les donnĂ©es sont converties en "mots-clĂ©" (Encodage de haut niveau) puis ceux-ci sont convertis en motifs de barres et d'espaces. (Encodage de bas niveau) De plus un système de correction des erreurs Ă  plusieurs niveaux est inclus, il permet de reconstituer des donnĂ©es mal imprimĂ©es, effacĂ©es, floues ou arrachĂ©es. Dans la suite de cet exposĂ©, l'expression "mot-clĂ©" sera abrĂ©gĂ©e en MC et code de Reed-Solomon en RS.

La structure générale.

 

 

 

 D

 Ă©

 b

 u

 t

 

 

 G1

 D15

D14

 Dr1

 

 

 

 F

 i

 n

 

 

 

 

 G2

 D13

 D12

 Dr2

 G3

 D11

 D10

 Dr3

 G4

 D9

 D8

 Dr4

 G5

 D7

 D6

 Dr5

 G6

 D5

 D4

 Dr6

 G7

 D3

 D2

 Dr7

 G8

 D1

 D0

 Dr8

 G9

 C3

 C2

 Dr9

G10

C1

C0

Dr10

L'encodage de bas biveau.

L'encodage de haut biveau.

La détection et la correction des erreurs.

Ceux qui auront lus et compris les codes de Reed Solomon s'y retrouveront ; pour les quelques ignares qui n'ont pas tout compris (Dont moi !) il suffira d'appliquer la "recette" en utilisant les codes obtenus dans l'ordre inverse (Du dernier au premier).

La création des codes barres.

Maintenant que nous savons créer le motif d'un code barre, il nous reste à le dessiner à l'écran et à l'imprimer sur papier. Deux approches sont possibles : Il semble qu'il n'y ait pas de police gratuite pour codes barre PDF417 sur le net. J'ai donc décidé de dessiner entièrement cette police et de la proposer en téléchargement. Le fait qu'il y ait 929 MC avec pour chacun 3 variantes va nous obliger à diviser les 17 bits d'un MC en plusieurs parties. Mais diviser 17 ... hein ... il va falloir ruser. Si l'on considère que le premier bit est toujours "1" et le dernier "0", on peut imaginer un séparateur de forme "01" et il ne reste plus que 15 bits dans chaque MC; on peut alors diviser ces 15 bits en 3 quintets,. Il existera alors 25 = 32 quintets possibles affectés à 32 caractères de la police. Le programme d'encodage sera chargé de transformer les 3 quintets de chaque MC en une chaine de 3 caractères.
La police va donc contenir les caractères suivants : La chaine de caractère Ă  envoyer Ă  l'imprimante ressemblera donc Ă  quelque chose comme : +*gfA*jhD*BAl*gCt*hjk*- et ceci pour chaque ligne.

La police " pdf417.ttf "

Cette police contient les 35 motifs décrits ci-dessus. Les codes de début de ligne et de fin de ligne intégrent des marges de 2 modules. La hauteur est égale à 3 modules ce qui correspond au cas le plus courant.
Copiez ce fichier
dans le répertoire des
polices, le plus souvent :
C:\WINDOWS\FONTS

Encodage d'un code pdf417

Le programme devra se dĂ©rouler en 4 Ă©tapes : Du fait de l'interaction entre les diffĂ©rents modes de compression et les diffĂ©rents sous-modes du mode "texte" il est difficile de faire une optimisation Ă  100%. Le programme va donc dĂ©composer la chaine en "blocs" de type "numĂ©rique", "texte" ou "octet" puis il repassera certains blocs dans un autre mode si la surcharge dĂ»e aux MC de commutation est supĂ©rieure au gain de compression. On ne pourra pas tenir compte de tous les paramètres tels les rembourrages, les gains sur les multiples de 6 octets, les commutateurs mono-caractère ou les commutations entres sous-modes du mode "texte" : il faudrait pour cela plusieurs milliers de lignes de programme.
Une autre difficulté vient de la grandeur des nombres manipulés, par exemple l'opération "Modulo 900" appliquée à un nombre de 44 chiffres engendre inévitablement un dépassement de capacité; le programme devra effectuer ce type de calcul par étapes.

Un petit programme pour tester tout ça

Voici un petit programme Ă©crit
en Visual Basic 6. Le fichier
d'installation copiera le
programme, les dépendances
Visual Basic ainsi que les
fichiers sources et la police.

Fichier d'auto-installation :
Fichier ZIP sans installation :
La fonction PDF417$ fait environ 500 lignes, je ne la reproduis donc pas ici, il suffit de la rĂ©cuperer dans le fichier "form1.frm" qui se trouve avec le programme ci-dessus ; avec le programme d'auto-installation le fichier "form1.frm" se trouve dans le rĂ©pertoire du programme, sous-rĂ©pertoire "sources".
La fonction s'appelle de la manière suivante : resultat$ = pdf417$(Chaine$, Sécu%, NbCol%, CodeErr%)
avec Chaine$ qui doit contenir la chaine Ă  coder, SĂ©cu% pour le niveau de correction (-1 = auto.), NbCol% pour le nombre de colonnes de donnĂ©es par ligne (<1 = auto.) et CodeErr% pour rĂ©cupĂ©rer un Ă©ventuel numĂ©ro d'erreur. Ces trois derniers paramètres sont optionnels et sont passĂ©s par rĂ©fĂ©rences; au retour ils contiennent les valeurs rĂ©ellement utilisĂ©es. Valeurs de CodeErr% au retour de la fonction : Il suffit maintenant d'afficher ou d'imprimer la chaine resultat$ avec la police pdf417 par exemple dans un traitement de texte. Les utilisateurs de Word pourront mĂŞme intĂ©grer la fonction pdf417$ dans une macro afin d'automatiser le traitement. Pour arriver Ă  effectuer tous les traitements dans une unique fonction, j'ai dĂ» utiliser des "Gosub" au lieu de fonctions avec paramètres; j'entends dĂ©jĂ  les esthètes de la programmation hurler au sacrilège.

Vous aimez cette page ?

Elle vous est utile ?

Cliquez ici !