Créer des code-barres et des QR-codes avec barcode et qrencode sous Linux
Objectif : générer une page de QRcodes permettant de faciliter le nommage et l'inventaire des ordinateurs du fablabUtilisation de barcode
Défaut : ne gère que les code-barres et pas les QR-codeAvantage : permet de générer une page avec plein de code-barres et un texte correspondant à chaque code-barre
for ((c=1001 ; c<1031 ; c++ )) ; do echo "HATLAB23-"$c ; done | barcode -t 3x10 -e 128 |ps2pdf - essai6.pdf
Utilisation de qrencode
Défaut : ne génère qu'une image à la fois et n'affiche pas le texte en dessousAvantage : en qualité haute, est lu plus rapidement qu'un code-barre
echo "HATLAB23-1001" | qrencode -l H -o qr2.png
Références pour améliorations
https://unix.stackexchange.com/questions/654784/how-can-i-generate-qr-codes-with-subtitles ajout de texte sous chaque qrcodehttps://www.inforbiro.com/blog/how-to-add-image-to-qr-code ajouter une image en dégradant le qrcode (il est redondant en utilisant l'option High)
https://www.stimulsoft.com/en/blog/articles/embedding-an-image-into-a-qr-code
https://scanova.io/blog/how-to-make-a-custom-qr-code/
https://qrexplore.com/blog/embed-logo-in-qr-code
https://www.researchgate.net/publication/262527881_QR_Images_Optimized_Image_Embedding_in_QR_Codes
https://www.qrcode-tiger.com/convert-image-to-qr-code
https://infosecwriteups.com/beginners-ctf-guide-finding-hidden-data-in-images-e3be9e34ae0d
Amélioration pour qrencode avec du texte dessous
qrcode_avec_texte.sh :
qrcode_avec_texte.sh
i=$1
#qrencode "$i" -t svg -l H -s 10 -o "$i.q.svg.orig"
qrencode "$i" -t svg -l H -o "$i.q.svg.orig"
awk <"$i.q.svg.orig" >"$i.q.svg" -v txt="$i" '
/<svg /{ match($0,"height=\"([0-9.]+)",grp)
ht = grp[1]*1.1
ht = "height=\"" ht
sub("height=\"([0-9.]+)",ht,$0)
match($0,"viewBox=\"0 0 ([0-9]+) ([0-9]+)",grp)
vb = int(grp[2]*1.1+.5)
x = int(grp[1]/2+.5)
y = grp[2]+1
vb = "viewBox=\"0 0 " grp[1] " " vb
sub("viewBox=\"0 0 ([0-9]+) ([0-9]+)",vb,$0)
}
/<rect x="0" /{
match($0,"height=\"([0-9.]+)",grp)
ht = int(grp[1]*1.1+.5)
ht = "height=\"" ht
sub("height=\"([0-9.]+)",ht,$0)
}
/<\/svg>/{
printf " <text font-family=\"DejaVu, SansMono\" font-size=\"3\" stroke-width=\"0\" text-anchor=\"middle\" x=\"%d\" y=\"%d\" xml:space=\"preserve\">%s</text>",x,y,txt
}
{print}
'
#qrencode "$i" -t svg -l H -s 10 -o "$i.q.svg.orig"
qrencode "$i" -t svg -l H -o "$i.q.svg.orig"
awk <"$i.q.svg.orig" >"$i.q.svg" -v txt="$i" '
/<svg /{ match($0,"height=\"([0-9.]+)",grp)
ht = grp[1]*1.1
ht = "height=\"" ht
sub("height=\"([0-9.]+)",ht,$0)
match($0,"viewBox=\"0 0 ([0-9]+) ([0-9]+)",grp)
vb = int(grp[2]*1.1+.5)
x = int(grp[1]/2+.5)
y = grp[2]+1
vb = "viewBox=\"0 0 " grp[1] " " vb
sub("viewBox=\"0 0 ([0-9]+) ([0-9]+)",vb,$0)
}
/<rect x="0" /{
match($0,"height=\"([0-9.]+)",grp)
ht = int(grp[1]*1.1+.5)
ht = "height=\"" ht
sub("height=\"([0-9.]+)",ht,$0)
}
/<\/svg>/{
printf " <text font-family=\"DejaVu, SansMono\" font-size=\"3\" stroke-width=\"0\" text-anchor=\"middle\" x=\"%d\" y=\"%d\" xml:space=\"preserve\">%s</text>",x,y,txt
}
{print}
'
et automatisation de la génération de 30 QR-codes :
mkdir liste_qr # répertoire dédié aux QR-codes générés
for ((numero=1001 ; numero <=1030 ; numero++ )) ; do ../qrcode_avec_texte.sh HATLAB23-$numero ; done
for ((numero=1001 ; numero <=1030 ; numero++ )) ; do ../qrcode_avec_texte.sh HATLAB23-$numero ; done
Importer dans Inkscape tous les SVG ainsi générés,
puis Menu Objet / Aligner et distribuer / onglet grille : 5 colonnes / 6 lignes
Cela devrait tenir sur une feuille A4 imprimable
Défaut : les QR-codes ne sont pas dans l'ordre
Note : le nommage hatlabYY-Annn permet d'avoir un nommage unique et court du PC pour identification dans l'inventaire GLPI (remontées automatiques)
- YY : 23 en 2023
- A = 1 Sunlab, 2 Izylab, 3 Mesnilab, 4 Traplab
- nnn : de 001 à 999 devrait suffire...
l'idée c'est d'avoir le texte lisible sur les 4 côtés
et d'imprimer une page A4 avec les numéros/références
<text font-family="DejaVu, SansMono" font-size="3px" stroke-width="0" x="4" y="32" xml:space="preserve" id="text331">HATLAB23-2002</text> <text font-family="DejaVu, SansMono" font-size="3px" stroke-width="0" x="-7" y="42" xml:space="preserve" transform="scale(-1)" id="text332"> <tspan x="-29" y="-0.8">HATLAB23-2003</tspan></text> <text font-family="DejaVu, SansMono" font-size="3px" stroke-width="0" text-anchor="middle" x="-17" y="33" xml:space="preserve" transform="rotate(-90)" id="text333">HATLAB23-2004</text> <text font-family="DejaVu, SansMono" font-size="3px" stroke-width="0" text-anchor="middle" x="16" y="-0.1" xml:space="preserve" transform="rotate(90)" id="text334">HATLAB23-2005</text>