URL: https://linuxfr.org/users/anonyme/journaux/creation-de-qrcode-et-code128-pour-gestion-de-parc Title: creation de qrcode et code128 pour gestion de parc Authors: Anonyme Date: 2020年06月08日T20:34:55+02:00 License: CC By-SA Tags: qrcode, latex, debian, codes-barres et gestion_de_parc Score: 35 chère journal introduction : ce journal explique comment creer des étiquettes en code128 ou qrcode pour la gestion de parc.( et tous code barres existant, toutes quantités) lors des inventaires j'ai toujours rêver de venir dans la pièce et de repartir aussi sec, plus besoin de post it, de crayon etc ..., je passe avec mon scanner et j'en ressort. J'utilise Latex, et un script bash, que j'ai fait assez à l'arrache. Mais ca fonctionne plutôt bien depuis 1 an. Je l'utilise avec WSL sous Windows 10 (ordi du boulot), comment ça fonctionne ? le script bash permet de remplir automatiquement le fichier latex et d'ouvrir le document dans votre lecteur de pdf favori, sinon c'est peu intuitif de remplir un fichier latex pour les étiquettes. j'accepte vos remarques même non constructive :), sur les postes Linux c'est plus sympa à utiliser je trouve. pour les étiquettes, avec un qrcode cela peut être très petit. j'utilise des planches A4 avec 189 étiquette par planche sans pb. Cela nécessite quand même de connaître un peu LaTeX Du coup maintenant, J'utilise des étiquettes en polyethyléne disponible sur https://www.manutan.fr/fr/maf/etiquette-extreme-polyethylene-impression-laser-jet-d-encre-copieur plutôt pas mal, pour les radin des sans marque conviennent aussi, en papier c'est pas terrible si le qrcode est trop petit, ça bave un peu et n'aide pas à la lecture. 2 point important, il faut toujours utiliser le même logiciel pour ouvrir le pdf, et imprimer toujours sur la même imprimante. sinon les étiquettes risque de ne plus correspondre sur la planche. il y a un répertoire ~/label/ qui contient les fichier latex et temporaire Mes petit camarades arrive l'utiliser sans de pb, pour les secrétaires je leur ai fait un qrcode a scanner dans la console linux qui s'ouvre lorsque l'on clique sur l’icône debian de win10 qui lance tout (un qrcode contenant ./qrcode_script.sh par exemple) pour ce journal, je prend le fichier pour 24 étiquette/pages. petit défaut je n'ai pas réussi à placer des accents dans les qrcodes avec le package qrcode, mais ca marche avec pst-barcode, pour faire court. il faudra installer avec apt ou synaptic : texlive-latex-base texlive-latex-extra texlive-latex-recommanded texlive-science texlive-lang-french dvips ps2pdf optionnel : kate (si vous voulez éditez directement le fichier sous linux avec wsl, c'est ce que j'utilise) un serveur X pour wsl https://sourceforge.net/projects/vcxsrv/ créé un repertoire label/ à la racine de l'utilisateur contenant les/le fichier LaTeX (.tex) et 2 fichier un jpg et un .ps d'une image blanche de 5x5mm environ utiliser gimp il connait le format .ps. A la racine du dosier utilisateur il faut placer le script bash. le but de tous cela c'est de pouvoir crée des milliers d’étiquette avec LaTeX sans que cela ne devienne trop pénible, et que cela s'imprime facilement pour un utilisateur normal. le script qu'il faut lancer pour commencer la configuration. ```bash #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/bin:/bin export PATH=$PATH:/home/ #la j'efface les fichier temporaire, qui risque de faire des erreurs et pertuber mes collaborateur rm label/input*>/dev/null 2>&1 rm *.log>/dev/null 2>&1 rm *.aux>/dev/null 2>&1 rm *.pdf>/dev/null 2>&1 # petit rappel, le fichier se rempli avec une information par ligne. # sur certain poste sous win10 il y a un lien vers ce fichier sur le bureau qui ouvre notepad.exe #dans ce cas il faudra le traiter avec : #dos2unix numero.txt #sinon vous risqué d'avoir /r/m a la fin du code barre, et c'est très moyen echo " REMPLIR LE FICHIER numero.txt" #la première question permet d'utiliser une planche a moitié utilisé, #cela permet de faire des economie si vous n'avez qu'une etiquette a imprimer par exemple # la numérotation est sous la forme : #123 #456 #789 #etc .. until [[ ${position} =~ ^[0-9]+$ ]]; do echo "position de l’étiquette à imprimer [default=2] ?" read position done # la petite option que j'utilise de temps en temps pour regler # la hauteur du qrcode si le numéro de série prend trop de place # c'est en mm, 10 mm c'est correcte, mini qui marche chez moi 6mm pas de maxi until [[ ${hauteur} =~ ^[0-9]+$ ]]; do echo "hauteur du QR code en mm [default=10] ?" read hauteur done #maintenant je rempli un fichier temporaire latex d'image blanche #pour pouvoir décaler sur la bonne étiquette cpt=1 while ((cpt<$position)) do echo "\begin{center} \begin{tabular}{c} \includegraphics{label/blanc.png} %ici le nom de l'image \end{tabular} \end{center} ">> label/input2 %le nom du fichier temporaire ((cpt+=1)) done #parfois c'est long lorsque je créer 250 etiquettes, petit message pour les collègues tput setaf 226 ; echo "Travail en cours ..." # la création des étiquettes proprement dites dans un fichier temporaire, # ce sont des commandes LaTeX #cela sert a eviter des débordement sur les autre étiquettes et #a faire un mise en page a l’intérieur de chaque étiquette au petit oignon peut importe ce #que l'on écrit, sous réserve que cela rentre dans l’étiquette of course. # ici c'est basique, le texte entré est transformé en qrcode # et imprimé au dessus/a coté, vous pouvez aussi ne pas affiché de texte ou qu'il soit différent #du qrcode #######################marque page 1 cat numero.txt | while read j ; do echo "\begin{minipage}[c]{6cm} \begin{center} \textsf{\textbf{\large{"$j"}}} \qrcode[height=${hauteur}mm]{"$j"} \end{center} \end{minipage} ">> label/input ; done echo " creation des etiquettes " # compilation du document pour du qrcode pdflatex --interaction=batchmode label/numero.tex 2>&1 #je lance adobe directement qui affichera le pdf a imprimer, j'ai une preference avec sumatraPDF #qui ne rajoute aucune marge MAIS il faut pouvoir l'installer /mnt/c/Program\ Files\ \(x86\)/Adobe/Acrobat\ Reader\ DC/Reader/./AcroRd32.exe 'numero.pdf' #si il y a une erreur le fichier ne sera pas généré et adode va l'indiquer : le fichier n'existe pas ``` voila pour le petit script bash que je lance pour faire la mise en page des étiquettes, pour le lancer vous devriez faire chmod +x votrefichier.sh puis ./votrefichier.sh petit rappel dans le fichier numero.txt je place ce que je veux, chaque ligne qui va me créer un qrcode individuel : 231wx65478 cray1 du sous sol 01981 SELECT ville FROM client ./monscript_prefere oui je fais mes requètes SQL avec un qrcode pour gagner du temps, voila pour la partie facile :) maintenant le fichier LateX pour créer les étiquettes, il n'y a rien de particulier pour ceux qui connaissent un peu. cela doit etre un fichier texte (notepad.exe c'est pratique pour cela) numero.tex à placer dans label/ ```latex %%%%ne pas toucher a partir de maintenant % Exemple d'étiquettes autocollantes avec LaTeX % Auteur : NeSto % Source : http://www.rez-metz.supelec.fr/perso/nesto \documentclass[a4paper,12pt]{article} \usepackage[newdimens]{labels} %le nom pour faire des recherches sur google \usepackage[latin1]{inputenc} \usepackage{palatino} \usepackage[utf8]{fontenc} \usepackage{graphicx} \usepackage[nolinks]{qrcode} %ce qui permet de faire les qrcode %\usepackage[francais]{babel} % test pour avoir les accents :( %%%%%%%%%%ne pas toucher au dessus %%c'est la partie qui sert a configurer le fichier pour votre planche d'etiquette \LabelCols=3% Nombre de colonnes d'étiquettes sur la page \LabelRows=8% Nombre de lignes d'étiquettes sur la page \LeftPageMargin=0mm% Marge gauche de la page \RightPageMargin=0mm% Marge droite de la page \TopPageMargin=0mm% Marge haute de la page \BottomPageMargin=0mm% Marge basse de la page \InterLabelColumn=0mm% Espace vertical entre les étiquettes \InterLabelRow=0mm% Espace horizontal entre les étiquettes \LeftLabelBorder=7mm% Marge intérieure gauche des étiquettes \RightLabelBorder=0mm% Marge intérieure droite des étiquettes \TopLabelBorder=0mm% Marge intérieure haut des étiquettes \BottomLabelBorder=0mm% Marge intérieure bas des étiquettes %\LabelInfotrue %infos de debugging %%%%%la ligne ci dessous permet d'effectuer le réglage des marges, il faut simplement supprimer % pour la rendre active %\LabelGridtrue %imprimer les frontières des cases %% ci dessous pas besoin de toucher \begin{document} \begin{labels} % =============================== % DEBUT DU CONTENU DES ETIQUETTES % =============================== %\vspace*{\fill} \input{label/input2} \input{label/input} %ce sont les fichiers crée par le script bash qui sont intégré dans le document %\vspace*{\fill} % ============================= % FIN DU CONTENU DES ETIQUETTES % ============================= \end{labels} \end{document} ``` deuxième partie qui utilise un super module qui permet de faire TOUS les codes barres qui existe au monde, mais c'est un peu plus ardu c'est du LaTeX pur et dure. Si vous recopiez les fichier ca devrait passer. la doc du module qui vous permettra de trouver votre code barre préféré, médical, postal pour ceux qui se souviennent du code barre sur les lettres, datamatrix, pdf417, aztec, Pharmacode, ups etc ... (il y en a plus de 70 avec les déclinaisons de chacun) https://www.ctan.org/pkg/pst-barcode qui vous permettra de régler les codes barre voulu au petit oignons. La doc est dense mais complète je n'ai pas eu de pb particulier sauf l'option 'textfont' qui est mentionné par 'font' mais un exemple résous le pb. Il n'est pas nécessaire de placer toute les options que vous voyez, j'en ai eu besoin je les ai laissé vous devez créer un nouveau script à partir du premier plus haut, il faut modifier à partir du marque page 1 ```bash #######################marque page 1 #ici ce qui va fabriquer un code128, vous pouvez modifier code128 par qrcode ou #d'autre référence pour vos test dans la jolie ligne LaTeX ci dessous. # chaque option est expliqué regalez vous avec la doc :) cat actif.txt | while read j ; do echo "\begin{pspicture}(0,0.5)\psbarcode[scalex=1]{$j} {textfont=Arial-Bold textsize=16 guardwhitespace includetext textpos=2 height=0.5 inkspread=0.55 width=2.2 textyalign=above }{code128}\end{pspicture} ">> label/input ; done #création du pdf latex label/numero2.tex>/dev/null 2>&1 #petite transformation necessaire pour avoir du pdf, par défaut latex produit du DVI dvips numero2.dvi ps2pdf numero2.ps # lancement du lecteur de pdf sur le fichier créé /mnt/c/Program\ Files/SumatraPDF/./SumatraPDF.exe 'numero2.pdf' ``` voila pour le script bash forcement il faut un nouveau fichier tex à placer dans label/ que vous allez appeler numero2.tex: ```latex Exemple d'étiquettes autocollantes avec LaTeX % Auteur : NeSto % Source : http://www.rez-metz.supelec.fr/perso/nesto \documentclass[a4paper,12pt]{article} \usepackage[newdimens]{labels} \usepackage[latin1]{inputenc} \usepackage{palatino} \usepackage[T1]{fontenc} \usepackage{graphicx} \usepackage[nolinks]{qrcode} \usepackage{pstricks,pst-barcode,pstricks-add} % l'option qui active tous les code barres %\usepackage{setspace} reglage de l'interlign, testé legerement a voir \LabelCols=3% Nombre de colonnes d'étiquettes sur la page \LabelRows=8% Nombre de lignes d'étiquettes sur la page \LeftPageMargin=6,6mm% Marge gauche de la page \RightPageMargin=6,6mm% Marge droite de la page \TopPageMargin=12,14mm% Marge haute de la page \BottomPageMargin=12,18mm% Marge basse de la page \InterLabelColumn=2,89mm% Espace vertical entre les étiquettes \InterLabelRow=0mm% Espace horizontal entre les ?tiquettes \LeftLabelBorder=4mm% Marge intérieure gauche des ?tiquettes \RightLabelBorder=0mm% Marge intérieure droite des ?tiquettes \TopLabelBorder=5mm% Marge intérieure haut des ?tiquettes \BottomLabelBorder=0mm% Marge intérieure bas des ?tiquettes %\LabelInfotrue %infos de debugging %\LabelGridtrue %imprimer les frontières des cases % pour aider a remplir les marge ci dessus, supprimer % \begin{document} \begin{labels} % =============================== % DEBUT DU CONTENU DES ETIQUETTES % =============================== %\vspace*{\fill} \input{label/input2} \input{label/input} % % ligne ci dessous pour faire des test en enlevant le % devant %%%%\psbarcode[scalex=1]{LASER001*0071}{textfont=Arial-Bold textsize=15 guardwhitespace includetext textpos=2 height=0.3 inkspread=0.65 width=1.4 textxalign=justify textyalign=above }{code128} %\vspace*{\fill} % ============================= % FIN DU CONTENU DES ETIQUETTES % ============================= \end{labels} \end{document} ``` petit conseil pour vos première étiquettes, imprimer toujours plus de la moitié de la page avec les frontières, puis utiliser un pied à coulisse pour ajuster les frontières au etiquette, et suivez les indications au 1/10 de mm, latex respectera vos mesures. Si jamais votre imprimante ajoute une marge dont vous ne connaissez pas la valeur, toujours avec le pied a coulisse et une calculatrice vous calculez le décalage à placer dans le fichier tex, pour un premier reglages il faut environ 4 a 5 planches pour le calage, qui partiront à la poubelle... il faut vraiment un pied a coulisse latex etant un peu pointilleux et donnant des erreurs peu comprehensive pour des erreurs de syntax trivial, c'est mieux d'y aller pas a pas pour les modif si vous n'êtes pas habitué. Et en cas d'erreur n'hesitez pas à reprendre le fichier d'origine qui marche :). j'en profite pour parler du PDF417 qui permet de vraiment placer beaucoup d'information dedans et d'avoir presque des des gros scripts shell directement en code barre, Je l'utilise pour chaque pièce ou etage afin d'avoir un resumé des numéros de série à l’intérieur sur l'étage correspondant ou la pièce correspondante.

AltStyle によって変換されたページ (->オリジナル) /