Haufenweise Codes

Gestern ist ein Tweet1 in meiner Timeline eingetrudelt, der ein paar interessante Fragen aufgeworfen hat:

Tweet von Ricarda

Ein QR-Code ist ja kein Problem, aber mehrere auf einem Mac sind schon interessanter. Ich habe hier schon mal etwas geschrieben, wie sich das mit Word und VBA unter Windows erledigen lässt, aber funktioniert eben nicht auf dem Mac (oder mit Office365 😉). Also habe ich eine kleine Nachtschicht gestern und den Abend heute für etwas Recherche genutzt und kann ein paar Möglichkeiten anbieten. Einige davon sind auch für andere Betriebsysteme geeignet, da sie browser-basiert arbeiten. Legen wir los!

Vorab: warum das überhaupt funktioniert

Wer mir auf Twitter folgt, hat bestimmt schon den einen oder anderen Tweet von mir gelesen, in dem ich mich als Verfechter von standardisierten Schnittstellen zu Softwaresystemen zu erkennen gebe. Ja, ich bin ein «API-Fanboy» 😉 Eine kleine Einführung, warum das so wichtig ist, ist hier zu finden. Damit ist ein Zugriff auf Dienste möglich, die sich dann zu völlig neuen Diensten kombinieren lassen oder Daten auf andere Art und Weise aufbereiten. Eine solche API (application programming interface) bieten auch einige Services zum Erzeugen von QR-Codes an. Damit kann ich dann über den Aufruf einer URL einen Code erzeugen lassen. Alles, was eine URL versteht, ist dann in der Lage, einen QR-Code zu produzieren. Ein Beispiel dafür ist die hervorragend gestaltete API von goqr.me, deren Startseite unter http://goqr.me/de/api/ zu finden ist. Aber das ist Stoff für einen längeren, eigenen Blogpost.

Google Sheets

Der Klassiker. Die Google Tabellen haben Excel seit Jahren einiges voraus. Unter anderem eine Funktion Image(), deren Quelle auch ein Hyperlink sein kann. Wie oben beschrieben, muss dann nur die URL zu einem QR-Code Service eingetragen werden und schon haben wir ein Bild.

Google Sheets

Links die Daten eintragen, rechts die Formeln mit der Image()-Funktion und da drin die URL eines QR-Code Service – fertig! Hat den Vorteil, unabhängig vom Betriebssystem zu sein.

Der Browser-Weg

Es gibt Leute, die wollen Google Tabellen nicht benutzen oder können diesen Ansatz nicht benutzen (es soll tatsächlich noch Schulen in Deutschland geben, die nicht über eine dicke Leitung ins Internet verfügen). Es war auch nach längerer Suche keine kostenfreie Lösung für den Mac aufzutreiben, die über eine grafische Oberfläche verfügt (ja, auf der Kommandozeile ist das alles «einfach», aber da kommen wir erst in zwei Abschnitten hin). Mir widerstrebt es einfach, für die Erzeugung von 100 QR-Codes 15-20 Euro zu bezahlen, noch dazu, wenn der Einsatz für den Bildungsbereich erfolgt. Ausserdem (siehe Internet-Verfügbarkeit) wollte ich, dass die ganze Sache ohne eine Verbindung mit dem Internet funktioniert. Aber in der Überschrift steht doch Browser? Ja, wenn ich keinen Online-Dienst nutze, sondern JavaScript, dann funktioniert eine ganze Mange auch offline. Noch dazu, wenn ein engagierter Entwickler aus Südkorea (Sangmin Shim) eine Javascript-Bibliothek zum Erstellen von QR-Codes als Open Source Software entwickelt (unter einer sehr liberalen, OER-tauglichen MIT-Lizenz!). 감사합니다!

Die Webseite zum Erzeugen von QR-Codes

Ich gestehe, ich bin kein Frontend-Entwickler. Sollte also jemand eine bessere Version beitragen können, bitte Bescheid geben. Ich lerne gern dazu und tausche die Seite gerne aus. Eine Vorgabe ist allerdings, dass alles in einer einzigen, offline-tauglichen HTML-Datei stecken muss, um die Weitergabe bzw. die Nutzung zu erleichtern.

Nach dem Eintragen der jeweiligen Nutzlast (aus je einer Zeile wird ein QR-Code) und der Auswahl von Größe oder Farbe reicht ein Klick auf die Schaltfläche «Daten absenden» und die Codes werden erzeugt mit dem Inhalt als Überschrift ausgegeben:

Die Webseite zum Erzeugen von QR-Codes

Wer die HTML-Seite haben möchte: hier als .zip herunterladen.

Wer selbst bauen möchte, zur Bibliothek von Sangmin geht es hier entlang.

Eine «richtige» App

Es gibt aber ein (richtig, erraten, auch Open Source 😉) Tool, mit dem sich aus einem Script heraus grafische Eingabeelemente und Dialoge für den Mac darstellen lassen: «pashua» von Carsten Blüm. Damit lässt sich um ein Shell-Script für die Kommandozeile (s. nächster Abschnitt) etwas «GUI-Verkleidung» bauen und das in eine Anwendung gießen2. Ich habe etwas gebastelt und gelernt und habe danke pashua eine kleine Anwendung gebaut, die eigentlich genau die Anforderung erfüllt: in eine Textbox können mehrere Zeile (pro Zeile wird wieder ein QR-Code erstellt) eingegeben werden und auf Knopfdruck werden im festgelegten Ordner eine Reihe von .png-Dateien mit den QR-Codes erzeugt.

Die QRGen-App

Damit die Übersicht nicht verloren geht, welcher Code welchen Inhalt besitzt, wird auch gleichzeitig im Ordner eine Textdatei erzeugt, in der für jede Codenummer die Nutzlast aufgeführt wird.

## Inhalt
1;https://twitter.com/herr_mess
2;https://www.arminhanisch.de
3;https://www.heise.de/newsticker

Wichtiger Hinweis! DIESE SOFTWARE WIRD OHNE JEGLICHE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIEN ODER DER EIGNUNG DER SOFTWARE FÜR EINEN BESTIMMTEN ZWECK ZUR VERFÜGUNG GESTELLT. DIE VERWENDUNG ERFOLGT AUF EIGENES RISIKO UND OHNE IRGENDEINE VERANTWORTUNG FÜR DATENVERLUST ODER SCHÄDEN AN HARD- ODER SOFTWARE.

Die Anwendung steht wie pashua selbst auch unter einer BSD 3clause-Lizenz (OER-tauglich) und kann hier heruntergeladen werden. Wer eigene Versuche unternehmen möchte: die Homepage von pashua ist https://www.bluem.net/de/projekte/pashua/

Die Kommandozeile

Es ist faszinierend, dass Du auch im Jahr 2020 ein Terminalfenster öffnen musst, wenn Du etwas schnell und automatisiert erledigen möchtest. 😉 Das «Standard-Tool» für Windows, Mac und Linux (und weitere) ist auch hier wieder ein Open Source Programm, nämlich qrencode von Kentaro Fukuchi.

Beim Aufruf von qrencode wird dem Programm die Information übergeben, wie der Name der Grafikdatei lauten soll, die den QR-Code enthält und die Nutzlast (hier im Beispiel die Zugangsdaten zu einem fiktiven WLAN):

qrencode -o /tmp/qrcode.png "WIFI:T:WPA;S:mynetz;P:geheim;;"

Danach liegt im Ordner /tmp eine Datei mit dem Namen qrcode.png.

Der folgende Abschnitt kann ruhig überlesen werden, wenn die geneigte Leserin noch keine große Erfahrung mit der Kommandozeile hat.😉

Nehmen wir an, in der Zwischenablage des Mac liegt eine Liste von URLs, dann lässt sich über eine Kombination des Kommandozeilenprogramms zum Auslesen der Zwischenablage, qrencode und etwas Arithmetik zum Hochzählen ganz einfach eine ganze Reihe von QR-Codes erzeugen:

n=1; pbpaste | while read L; do qrencode -o "/tmp/qr_${n}.png" "$L"; n=$((n+1)); done

Damit wird die Zwischenablage Zeile für Zeile ausgelesen und im Ordner /tmp wird pro Zeile ein QR-Code mit dem Namen qr_1.png, qr_2.png und so weiter erzeugt. Im Finder sieht das dann so aus:

Die Ansicht der QR-Codes im Finder

Es ist auch egal, ob das nun drei oder dreihundert Zeilen sind, das Kommando bleibt exakt das Gleiche. :thumbs_up:

– Ende der Nerd-Warnung ;-) –

Wie komme ich jetzt an qrencode? Einfach die aktuelle Version von https://fukuchi.org/works/qrencode/ herunterladen. Alternativ (das ist etwas für die fortgeschrittene Kommandozeilen-Nutzerin) einen Paketmanager wie z.B. Homebrew nutzen, das ist eine große Arbeitserleichterung bei der Installation von Software auf dem Mac.

Honorable Mention – qreEncoder.app

Für alle Mac-Anwenderinnen gibt es eine GUI-App, die zwar nicht mehrere Codes auf einmal erzeugen kann, aber durch ihre einfache Bedienbarkeit besticht. Hier ist der Link zum AppStore. Für etwas mehr als 2€ gibt es auch eine «Pro»-Version, die drucktaugliche Vektorformate exportieren (EPS und SVG) kann.

Fazit

Ja, das Erstellung von mehreren (sogar sehr vielen) QR-Codes ist auf dem Mac kein Problem. Abgesehen von der Nutzung von Google Sheets erfordert das aber (wie auch bei anderen Plattformen) entweder finanziellen Aufwand oder Lernaufwand. Insbesondere die Beschäftigung mit der Kommandozeile oder den Grundlagen des Scriptings für eigene kleine Werkzeuge ist eine sehr lohnende Beschäftigung, die sich bereits mittelfristig deutlich auszahlt. Ich hoffe, die Vorstellung der verschiedenen Ansätze ist interessant und hilfreich. Wir schreiben uns auf Twitter!



  1. Wer den Thread nachlesen möchte: https://twitter.com/RicardaDreier/status/1285906462729011200
  2. Eine Anwendung unter macOS ist nichts anderes als ein Container, ein Ordner im Dateisystem mit einem bestimmen Aufbau. Wer neugierig ist, kann mit der rechten Maustaste mal auf eine Anwendung klicken und die Option «Paketinhalt zeigen» wählen. Tipp für Bastler: das Script, dass ausgeführt werden soll, muss genau so heißen wie die Anwendung und auch mit der Angabe in Info.plist übereinstimmen.
Share Kommentare deaktiviert