QR-Codes – Probleme mit Leerzeichen und Zeilenende

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: QR-Codes – Probleme mit Leerzeichen und Zeilenende

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von u_fischer » Sa 2. Mär 2024, 15:14

Das Problem scheint zu sein, daß ich einige Daten aus Befehlen hole, und dann irgendwie der Zeilenumbruch verloren geht.
Das Problem ist nicht, dass die Daten aus Befehlen kommen, sondern dass du \qrcode im Argument eines Befehls versteckt. \qrcode will catcodes ändern und kann das dann nicht mehr. Im Unterschied zu \verb funktioniert \qrcode dort trotzdem, aber wie in der Dokumentation beschrieben, musst du dann alle möglichen Eingaben escapen.

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von Stefan Kottwitz » Mi 28. Feb 2024, 21:00

Schön dass es klappt!

Stefan

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von White_Fox » Mi 28. Feb 2024, 20:44

Ok, ich habe es jetzt ganz plump gelöst, indem ich einfach die Leerzeichen mit "\ " erzwungen habe. Bei Telefonnummern, wo es nicht so einfach geht, lebe ich jetzt einfach mit ohne Leerzeichen. Viele Schlauphone formatieren sich Telefonnummern sowieso nach eigenem Gutdünken zurecht, so daß es im QR-Code jetzt auch nicht so wichtig ist.

Danke für deine Hilfe Stefan. :)

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von White_Fox » Mo 26. Feb 2024, 08:30

Danke. Hm...sowas habe ich schon befürchtet.

Weißt du, wie ich Parameter in einem Makro überschreiben kann?

Also sowas wie:
\renewcommand{\anyCommand}[1]{
	#1 = "edited #1"
	\put(5, 5){\rotatebox{90}{\LARGE\bfseries #1}}
}

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von Stefan Kottwitz » So 25. Feb 2024, 18:54

Es scheint, dass das \qrcode-Makro, was ein spezielles Parsing des Arguments hat, mit Makros darin nicht gut umgehen kann. Du kannst halt "\ " direkt drin schreiben und eingelesene Werte außerhalb \qrcode bearbeiten.

Stefan

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von White_Fox » So 25. Feb 2024, 18:22

Einfache Leerzeichen im Code zwischen Makros "verschwinden".
Aha...wieder was gelernt, das wußte ich noch nicht. Danke.

Dann sollte die Ersetzung der Leerzeichen ja tatsächlich die Lösung sein, allerdings wirft mir das immer Compilerfehler:
\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage[zw32010,boxed]{ticket}
\usepackage{marvosym}
\usepackage{tikz}
\usepackage[lf]{carlito}
\usepackage{microtype}
\usepackage{afterpage}
\usepackage{datatool}
\usepackage{qrcode}
\usepackage{xstring}
\DTLloaddb[
	keys={vorname,nachname,grad,email,telephon,mobil}
]{ma}{ma.csv}

\newcommand{\fix}[1]{\StrSubstitute{#1}{ }{\ }}

\newcommand{\vcardfront}[6]{\ticket{}}
\newcommand{\vcardback}[6]{\ticket{}}
	
\begin{document}
\color{black}
\newcounter{numcards}

\renewcommand{\ticketdefault}{%
	}
	
\DTLforeach{ma}{%
	\vn=vorname, \nn=nachname, \grad=grad, \tele=telephon, \mobil=mobil, \em=email}{%

	\renewcommand{\vcardfront}[6]{\ticket{%
		\pagecolor{white}
		\color{black}
		
		%\put( 53, 27){\includegraphics[width=26mm,origin=bl]{Logo_Grafik.pdf}}
		\put(5, 5){\rotatebox{90}{\LARGE\bfseries #1}}
		\put(12, 5){\rotatebox{90}{\LARGE\bfseries #2}}
		\put(20, 5){\rotatebox{90}{\small #3}}
		
		\put( 30, 5){\rotatebox{90}{\color{red}\line(1,0){30}}}
		
		\DTLifnullorempty{#4}{}{\put(35, 5){\rotatebox{90}{\small \Mobilefone\ #4}}}
		\DTLifnullorempty{#5}{}{\put(40, 5){\rotatebox{90}{\small \Telefon\ #5}}}
		\DTLifnullorempty{#6}{}{\put(45, 5){\rotatebox{90}{\small \Email\ #6}}}
		
		\put( 55, 5){\rotatebox{90}{\color{red}\line(1,0){30}}}
		
		\put( 60, 5){\rotatebox{90}{\small \Letter }}
		\put( 60, 9){\rotatebox{90}{\small DIE FIRMA GmbH}}
		\put( 65,  9){\rotatebox{90}{\small Bahnhofstraße 3}}
		\put( 70,  9){\rotatebox{90}{\small 01360 Großstadt}}
		\put( 75,  5){\rotatebox{90}{\small \Mundus\ www.DIEFIRMA.de}}
	}}
	
	\renewcommand{\vcardback}[6]{\ticket{%
		\pagecolor{white}
		\color{black}
		
		\put(55, 15){\qrcode[height=1in]{
BEGIN:VCARD^^JVERSION:4.0^^J
EMAIL;type=WORK:\DTLifnullorempty{#6}{}{#6}^^J
TEL;type=WORK:\DTLifnullorempty{#5}{}{#5‬}^^J
TEL;type=WORK:\DTLifnullorempty{#4}{}{#4}^^J
ORG:DIE FIRMA GmbH^^J
\StrSubstitute{ADR;type=WORK:;;Bahnhofstraße 3;Großstadt;;01360;Germany^^J}{ }{\ }
URL:https://www.DIEFIRMA.de^^J
FN:#1 #2^^J
N:#2;#1;;;^^J
END:VCARD^^J}}
	}}

	\sffamily
	\setcounter{numcards}{0}
	\whiledo{\value{numcards}<10}{%
		\stepcounter{numcards}%
		\vcardfront{\vn}{\nn}{\grad}{\mobil}{\tele}{\em}}
	\newpage
	
	\setcounter{numcards}{0}
	\whiledo{\value{numcards}<10}{%
		\stepcounter{numcards}%
		\vcardback{\vn}{\nn}{\grad}{\mobil}{\tele}{\em}}
	\newpage
}
\end{document}
Wenn ich die Leerzeichen direkt durch "\ " erzwinge bleiben die im QR-Code erhalten, das ist gut, den Text aber automatisch nach Leerzeichen filtern zu lassen kommt immer mit diesem Fehler zurück. Dabei ist es egal, ob ich das Ersetzenmakro außerhalb (wie im Beispiel) oder mehrmals innerhalb des qrcode-Makros verwende, es ist auch egal ob ich den von dir vorformulierten Befehl oder das \StrSubstitute-Makro direkt verwende.

Hast du noch eine Idee, wie ich das beheben kann?

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von Stefan Kottwitz » Sa 24. Feb 2024, 12:03

Ein Unterschied zum ersten Beispiel ist hier, dass Makros verwendet werden und nicht einfacher Text. Einfache Leerzeichen im Code zwischen Makros "verschwinden".

Eine Lösung ist hier, "\ " als Leerzeichen zu verwenden, wie 01352/99\ 88\ 77. Also in den Rohdaten bereits, was man mit Suchen/Ersetzen machen oder scripten kann, oder im LaTeX-Code, beispielsweise mit dem xstring-Paket und sowas wie
\newcommand{\fix}[1]{\StrSubstitute{#1}{ }{\ }}
und das einbaut beim oder nach dem Einlesen der Daten oder dem Aufrufen von \vcardback.

Stefan

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von White_Fox » Fr 23. Feb 2024, 23:12

Von dem Wortsalat hab ich tatsächlich kaum was verstanden. :-D
Oh je, dann fange ich am besten nochmal an. Also:
Das Beispiel im Eingangspost verhält sich exakt so wie mein Projekt hier auf meinem Rechner, d.h. das Problem ist schonmal erfolgreich reproduziert. Nochmal danke fürs Hochladen der .csv-Datei.

Das Beispiel einfach mal kompilieren, und mit einem Handy den Barcode in der PDF-Ausgabe scannen. Ach was solls, ich stell hier einfach mal rein was dabei rauskommt (und was rauskommen soll):

Was ich in den Rohdaten haben will, ist das hier, so soll das am Ende aussehen:

BEGIN:VCARD
VERSION:4.0
EMAIL;type=:marie.juana@diefirma.de
TEL;type=WORK:
TEL;type=WORK:01352/99 88 77
ORG:DIE FIRMA GmbH
ADR;type=WORK:;;Bahnhofstraße 3;Großstadt;;01360;Germany
URL:https://www.DIEFIRMA.de
FN:Marie Juana
N:Juana;Marie;;;
END:VCARD


Im MWE im ersten Post kann man sehen, daß ich jede Zeile (im Listing oben Zeile 59-69) mit einem ^^J beendet habe. Das gilt als Zeilenumbruch, ein QR-Code-Scanner erkennt daran daß z.B. die Emailadresse zu ende ist und ein neues Tag, z.B. die Telefonnummer, begonnen wird. Dann steht in den Rohdaten folgendes (ich markiere mal rot, wo man genau hinschauen muß):

BEGIN:VCARD
VERSION:4.0
EMAIL;type=:marie.juana@diefirma.de
TEL;type=WORK:
TEL;type=WORK:01352/998877
ORG:DIEFIRMAGmbH
ADR;type=WORK:;;Bahnhofstraße 3;Großstadt;;01360;Germany
URL:https://www.DIEFIRMA.de
FN:MarieJuana
N:Juana;Marie;;;
END:VCARD

Die Rohdaten werden zwar richtig als vCard erkannt, es werden aber alle Leerzeichen entfernt. Vor- und Nachname erscheinen als ein Wort mit einem Großbuchstaben in der Mitte, das GmbH-Suffix ist mit dem Firmennamen zusammengewachsen, usw.
Die Leerzeichen will ich nicht entfernt haben, die sollen bitte bleiben.


Das erste Beispiel (ist nicht von mir, sondern die Rohdaten von irgendeiner Webseite mit einem Codeschnipsel von Stackoverflow zusammenkopiert) in meinem Eingangspost hat diese ^^J-Zeilenenden nicht, da reicht der normale Zeilenumbruch im Code aus. Dort werden Leerzeichen korrekt wiedergegeben, z.B. in "Paul E. King". Wenn ich die ^^J jedoch in meinem eigene Code – der Marie-Juana-Visitenkarte – ebenfalls weglasse, erhalte ich folgendes (ich schreibe es mal in Codeformatierung, damit man es besser sieht):
BEGIN:VCARDVERSION:4.0EMAIL;type=:marie.juana@diefirma.deTEL;type=WORK:TEL;type=WORK:01352/998877ORG:DIE FIRMA GmbHADR;type=WORK:;;Bahnhofstraße 3;Großstadt;;01360;GermanyURL:https://www.DIEFIRMA.deFN:MarieJuanaN:Juana;Marie;;;END:VCARD
Wie man sieht: keiner Leerzeichen oder Zeilenumbrüche, die als Trenner erkannt werden würden, der ganze Datensalat ist eine einzige Zeile. Das vCard-Tag am Anfang wird noch richtig ausgelesen von der Scanner-App am Handy, aber da steht nichts drin weil alles was danach kommt aufgrund des fehlenden Trennsymbols (also Zeilenumbruch oder ^^J) die Rohdaten nicht mehr korrekt interpretiert werden können. Mir wird einfach eine leere vCard angezeigt.

Und ich hätte nun den QR-Code gerne so, wie er im funktionierenden Beispiel mit Paul E. King aussieht. Mit Leerzeichen in den Rohdaten. Wenn dann noch jemand wüßte, warum meine Rohdaten so verschandelt werden und wie ich das in Zukunft gleich vermeiden kann, wäre das großartig.

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von Stefan Kottwitz » Fr 23. Feb 2024, 21:05

Einbinden oder Anhängen von Daten ist immer gut, so dass man testen kann. Ich musste es manuell zum Compiler hochladen.

Anmelden ist sinnvoll, damit kann man seine Beiträge wiederfinden und Emails erhalten, wenn es Antworten gibt. Das Forum ist privat und nicht an Anmeldedaten oder Email-Adressen interessiert, keine Werbung etc., der Administrator bin ich und brauche keine Nutzerdaten. Am besten immer mit Pseudonym anmelden und neutraler oder sogar Wegwerf-Adresse im Internet.

Von dem Wortsalat hab ich tatsächlich kaum was verstanden. :-D

Stefan

Re: QR-Codes – Probleme mit Leerzeichen und Zeilenende

von White_Fox » Fr 23. Feb 2024, 19:24

Argh, tut mir leid daß da in meinem vorherigen Post so ein Wortsalat entstanden ist.

Vielleicht sollte ich mich hier doch mal anmelden, um das später wieder editieren zu können. Ich hoffe aber, man versteht mich trotzdem.

Nach oben