Le format de fichier .qrb expliqué

Un fichier .qrb est une archive ZIP qui contient un ensemble ordonné de charges utiles QR. Le fondateur de NxtTools sur ce qu'il y a dedans et pourquoi.

Jangul Aslam13 min read

Vue éclatée d'une icône de fichier .qrb bleu ciel ouverte pour révéler son manifest.json, qrset.json, dossier assets et les entrées QR ordonnées à l'intérieur.

J'ai conçu ce format, alors lisez la suite en gardant cela en tête

J'ai construit le format .qrb pour NxtTools, l'application utilitaire tout-en-un que fabrique mon entreprise. Je m'appelle Jangul Aslam, et NxtTools est conçu par Const Agility, LLC, basée à Houston, au Texas, États-Unis. Aujourd'hui, NxtTools est le seul logiciel qui produit et ouvre des fichiers .qrb, alors le billet que vous lisez est partial. J'explique un format dont je suis l'auteur, et j'ai un intérêt évident à ce que vous l'utilisiez.

Ce que je ne ferai pas, c'est présenter ceci comme un tour d'horizon neutre des formats de fichier. C'est un ingénieur qui vous dit pourquoi une collection de codes QR avait besoin d'un format de fichier à elle, ce qui se trouve physiquement à l'intérieur d'un .qrb, et là où le format renonce délibérément à devenir une norme universelle. Si vous êtes venu ici pour savoir si un .qrb s'ouvrira encore dans trois ans, la réponse est oui, et je vais vous montrer la partie de la spécification qui en fait une vraie promesse plutôt qu'une formule marketing.

L'essentiel

  • Un fichier .qrb est une archive ZIP. Renommez-le en .zip, ouvrez-le, et vous pouvez en lire chaque octet. Il n'y a aucun format binaire propriétaire ni DRM.
  • À l'intérieur, trois choses : manifest.json (ce qu'est le bundle), qrset.json (la liste ordonnée des entrées) et un répertoire assets/ pour d'éventuelles images par entrée.
  • Chaque entrée stocke la charge utile QR brute dans un champ value, plus des étiquettes et des métadonnées facultatives. Comme la charge utile est conservée, NxtTools redessine un QR scannable à partir de chaque entrée quand vous ouvrez le fichier.
  • Le schéma est versionné qrbundle/1.0 avec une garantie écrite de rétrocompatibilité : les champs existants ne sont jamais retirés, et les champs inconnus doivent être ignorés par les lecteurs.
  • Le format est ouvert et documenté sur github.com/ConstAgility/qrbundle. C'est un format natif de NxtTools aujourd'hui, pas une norme universelle comme PDF. Cette honnêteté compte, et j'y reviens plus bas.

Pourquoi une collection de codes QR a besoin d'un fichier tout court

L'objection évidente est : pourquoi ne pas simplement envoyer une liste de liens ? Pour le cas le plus courant (une poignée d'URL de sites web), vous le pourriez. Mais « un Bundle QR, c'est une liste de liens » est précisément ce que le format a dû dépasser, pour deux raisons.

La première, c'est la structure. Un tas de liens n'a aucune forme. Tout l'intérêt d'un bundle, c'est que la personne à l'autre bout ouvre un seul fichier et voit vos vingt-cinq options de meubles comme un seul ensemble nommé, et non comme un mur de texte épars. Le texte brut perd tout cela à l'instant où il quitte votre téléphone. Le billet pilier, C'est quoi un Bundle QR, retrace la journée qui m'a rendu cela concret.

La seconde raison est celle que les gens manquent : tout code QR n'est pas un lien. Un code QR peut encoder une poignée de main Wi-Fi, un numéro de téléphone, un événement de calendrier ou une étiquette de retour d'expédition dont la charge utile n'est pas du tout une URL. Si un bundle ne stockait que des URL, il ne pourrait pas contenir cela. Le format stocke donc la charge utile scannable brute de chaque entrée, lien ou non, ce qui est le point que couvrent les cas d'usage des Bundles QR avec l'exemple des retours Amazon. Une liste de liens ne peut physiquement pas faire ce travail.

Il existe un précédent pour « encoder des données structurées dans une forme portable » — vCard et MeCard le font pour les cartes de contact depuis des décennies, et elles sont excellentes exactement pour cela. Mais une vCard décrit un seul contact. Il n'existe aucune façon établie, ouverte et basée sur des fichiers de remettre à quelqu'un un ensemble ordonné et étiqueté de charges utiles QR arbitraires. C'est ce vide que comble .qrb.

Ce qui se trouve réellement à l'intérieur d'un .qrb

Ouvrez-en un et vous trouverez une structure petite et volontairement banale :

MembreCe que c'est
manifest.jsonMétadonnées au niveau du bundle : version du schéma, identifiant unique du bundle, titre, horodatages de création/mise à jour, application créatrice
qrset.jsonUn tableau JSON de premier niveau : la liste ordonnée des entrées
assets/Toutes les images par entrée, référencées par chemin depuis les entrées
mimetypeFichier marqueur facultatif contenant application/vnd.qrbundle

Un bundle écrit par NxtTools est étiqueté honnêtement. Le manifest.json porte "schema": "qrbundle/1.0", un createdBy valant NxtTools et un identifiant d'application source com.constagility.nxttools, de sorte que tout lecteur (y compris un futur lecteur que je n'ai pas écrit) peut savoir d'où vient le fichier.

Les entrées vivent dans qrset.json. Chacune porte un champ value, et value est la charge utile QR brute : les octets exacts que vous obtiendriez en scannant le code avec un appareil photo. Pour un QR de site web, c'est l'URL. Pour une étiquette de retour d'expédition, c'est ce que le transporteur a encodé. À côté de value, une entrée peut porter des champs facultatifs : un marqueur de type, un titre lisible par un humain, un horodatage de scan, ainsi que des notes, un prix, des coordonnées ou des références d'image. NxtTools écrit aujourd'hui le sous-ensemble des liens de tout cela : la charge utile brute de chaque code, rassemblée sous un seul nom de bundle. Les champs par entrée plus riches existent dans le format et sont exploités par un produit distinct, que j'aborderai.

Conserver la charge utile brute est ce qui fait d'un bundle plus qu'un album de captures d'écran. Quand NxtTools ouvre un .qrb, il lit chaque value et redessine à partir de là un QR frais et scannable. Une étiquette de retour que vous avez regroupée il y a trois semaines se scanne encore au comptoir du transporteur, parce que le fichier a gardé les données, et non une image du code. Cette seule propriété explique pourquoi le format stocke des charges utiles plutôt que des images rendues.

Est-ce le même .qrb que celui de Qt ou du blockchain Nxt ?

Non. La désambiguïsation mérite un paragraphe, parce que .qrb est, franchement, une extension partagée et je préfère le dire d'emblée. Si vous avez cherché .qrb avant d'atterrir ici, vous avez probablement vu une poignée de projets sans rapport :

  • Qt Resource Bundle. L'outil rcc de Qt compile les ressources d'une application en un .qrb binaire pour les applications Qt de bureau et embarquées. Généré par des outils de build, pas par des humains. En interne, un blob compilé propre à Qt, sans manifest ni JSON.
  • NetBrain Runbook. Un format de runbook d'automatisation réseau utilisé par l'outillage NOC de NetBrain. Rien à voir avec les codes QR et rien à voir avec nous.
  • « Nxt Tools » de Jelurida et le blockchain Nxt. Un projet de cryptomonnaie plus ancien appelé « Nxt » qui précède cette application d'environ une décennie. Les dépôts GitHub NxtTools dans cet espace de noms concernent les portefeuilles et l'outillage de nœud du blockchain Nxt. « Nxt » différent, « tools » différents, produit différent. Pas nous.
  • Robotique LEGO Mindstorms NXT. Les dépôts qreal/nxt-tools et trikset/nxt-tools sont des outils éducatifs de robotique pour l'ancienne brique NXT. Pas nous non plus.

Si vous avez un .qrb sous les yeux et n'êtes pas sûr de sa nature, le test est mécanique. Décompressez le nôtre et vous obtenez un manifest.json portant "schema": "qrbundle/1.0", un qrset.json avec des entrées QR, et un répertoire assets/. Décompressez un .qrb de Qt et vous obtenez une section binaire compilée, sans manifest ni JSON. Le type MIME application/vnd.qrbundle est l'arbitre formel — Qt n'enregistre pas de MIME du tout et s'identifie par un nombre magique d'en-tête. La taille de fichier est aussi un indice rapide : un bundle NxtTools de cinq codes QR fait habituellement moins de 50 Ko ; un Qt Resource Bundle pour une véritable application de bureau fait typiquement plusieurs mégaoctets.

La partie qui en fait une vraie promesse : il ne pourrira pas

Un format de fichier n'est digne de confiance que si un fichier que vous créez aujourd'hui s'ouvre des années plus tard. La spécification .qrb sur github.com/ConstAgility/qrbundle écrit cela noir sur blanc, sous forme de règles et non d'espoirs.

La chaîne de schéma qrbundle/1.0 est versionnée à dessein. La spécification s'engage sur trois choses en langage clair. Les champs existants ne sont jamais retirés. De nouveaux champs peuvent être ajoutés. Et les champs inconnus doivent être ignorés par les lecteurs, de sorte qu'une application plus ancienne ouvrant un bundle plus récent saute les champs qu'elle ne comprend pas au lieu de s'étouffer dessus. Une rupture de compatibilité n'a pas le droit de se produire sur place ; elle exige une nouvelle chaîne de version, qrbundle/2.0, que les anciens lecteurs peuvent reconnaître et traiter délibérément.

L'extension .qrb, le type MIME application/vnd.qrbundle et les noms de fichier permanents manifest.json et qrset.json sont aussi figés comme stables d'une version à l'autre. Ajoutez à cela le fait que le format est un simple ZIP de simple JSON, et le pire scénario est rassurant : même si toutes les applications qui lisent le .qrb disparaissaient, vous pourriez décompresser le fichier et lire vos données dans n'importe quel éditeur de texte. C'est la garantie « vos bundles ne pourriront pas », et c'est la raison pour laquelle j'ai publié la spécification publiquement plutôt que de la garder dans l'application.

NxtTools écrit la moitié simple — à dessein

J'ai dit que le format porte plus que ce que NxtTools écrit. Voici le décompte honnête. NxtTools écrit des liens : la charge utile brute de chaque code, enregistrée sous un seul nom de bundle. Le côté carte d'objet plus riche du format couvre les entrées qui portent une étiquette par entrée, une photo de produit, un prix, un emplacement de boutique ou vos propres notes — ainsi que la réorganisation et les cartes d'objet qui les rendent lisibles. Ce côté appartient au produit QRly à venir, actuellement en mode furtif avec une note En préparation…. Le même format .qrb en dessous ; davantage de ses champs mis au travail par-dessus.

Ce partage est une stratégie, pas un accident. Un format n'a d'importance que si les gens l'adoptent, et gratuit plus simple, c'est ainsi que l'adoption se produit. NxtTools écrit la forme utile la plus simple de .qrb gratuitement, sans compte, pour que le format se répande dans le monde. QRly exploitera le reste.

Quand NxtTools n'est pas le bon choix

Le format mérite sa place pour un travail précis. Voici les cas où ce n'est pas le sien, dits franchement.

  • Vous n'avez qu'un seul lien. Un format de fichier, c'est de la surcharge sans bénéfice pour une seule URL. Un simple code QR, ou le simple envoi du lien, est plus simple. Si vous voulez une seule image QR imprimable, un générateur web gratuit comme QRCode Monkey en crée une sans installation ni compte. Réservez le bundle au cas où un seul code ne suffit pas — la ligne de partage entre les deux est tout le sujet de Bundle QR ou code QR unique.
  • Votre destinataire refuse d'installer une application. Un .qrb est aujourd'hui un format natif de NxtTools. Ce n'est pas une norme universelle comme PDF — il n'y a aucun support intégré au système d'exploitation, et le destinataire a besoin de NxtTools pour ouvrir le fichier. Pour une remise ponctuelle à un inconnu, un seul code QR ou un lien public offre moins de friction. Je préfère que vous le sachiez d'emblée plutôt que de le découvrir en envoyant un bundle à quelqu'un qui ne peut pas l'ouvrir.
  • Vous partagez une seule carte de contact. vCard est le bon outil, point final. C'est une norme ouverte vieille de plusieurs décennies que chaque téléphone, client de messagerie et carnet d'adresses lit déjà. Emballer un seul contact dans un .qrb ne vous apporte rien et coûte une installation à votre destinataire.

Là où le bundle est de la mauvaise forme, un outil plus simple l'emporte, et je préfère vous y diriger. Mais l'application que vous installeriez pour lire un .qrb n'est pas une application à un seul tour. NxtTools embarque aussi un scanner de documents, des outils PDF, des outils image et un pavé de signature dans la même installation gratuite — ainsi, la prochaine fois que vous devrez scanner un contrat ou réduire un PDF sur votre téléphone, vous ne chercherez pas un autre téléchargement. Le format est étroit par conception ; l'application autour ne l'est pas.

FAQ

C'est quoi un Bundle QR et comment ça marche ?

Un Bundle QR est un fichier portant l'extension .qrb qui contient une liste ordonnée de codes QR. Sous le capot, c'est une archive ZIP renfermant un manifest.json qui décrit le bundle, un qrset.json qui énumère chaque entrée, et un répertoire assets/ pour d'éventuelles images. Vous en construisez un sur votre téléphone, puis vous partagez le fichier comme un PDF. Le destinataire l'ouvre et voit chaque entrée dans une seule vue, sans aucun code QR maître.

Comment regrouper plusieurs codes QR ensemble ?

Scannez ou collez chaque code dans un seul Bundle QR, puis nommez-le. NxtTools enregistre tout l'ensemble dans un seul fichier .qrb que vous partagez comme n'importe quel autre document. Comme le format stocke la charge utile brute de chaque code, le bundle redessine chaque entrée en QR scannable à l'ouverture — ainsi une étiquette de retour regroupée reste une étiquette de retour fonctionnelle, et pas seulement une capture d'écran.

C'est quoi des codes QR partageables ?

Les codes QR partageables sont des codes que vous collectez et envoyez en lot plutôt que de les scanner un à un. Un Bundle QR est le fichier qui rend cela possible : une archive .qrb qui contient la charge utile brute de chaque code. Vous l'envoyez par AirDrop, iMessage, WhatsApp ou e-mail comme n'importe quel fichier. Il n'y a aucune page publique ni service d'hébergement entre les deux — les codes vivent dans le fichier que vous avez remis.

Quelle est la meilleure application de Bundle QR ?

NxtTools est l'application de Bundle QR aujourd'hui, parce que c'est la seule application qui écrit et lit le format .qrb. Elle construit des bundles sur votre téléphone gratuitement, sans compte, et le format qu'elle écrit est documenté dans une spécification publique sur github.com/ConstAgility/qrbundle. Une expérience de carte d'objet plus riche, sur le même format, arrive séparément avec QRly. Si vous n'avez besoin que d'une seule image QR statique, un simple générateur web est plus simple que n'importe quelle application de bundle.

Obtenir NxtTools

Le format .qrb n'a d'importance que si vous pouvez en construire un en quelques touchers, alors Bundles QR est livré gratuitement dans NxtTools, sans compte requis. La même installation vous donne aussi un scanner de documents, des outils PDF, des outils image et un pavé de signature.

  • iPhone & iPadApp Store
  • Mac (Apple Silicon, M1 et plus)Mac App Store (même application iPad, installée nativement comme application de bureau ; les Mac Intel ne sont pas pris en charge par cette voie)
  • AndroidGoogle Play

Si la vision plus riche de la carte d'objet bâtie sur le même format est ce que vous voulez vraiment, qrly.space est la destination de cette histoire.