2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

Antwort erstellen

Bestätigungscode
Gib den Code genau so ein, wie du ihn siehst; Groß- und Kleinschreibung wird nicht unterschieden.
Smileys
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :arrow: :| :mrgreen: :geek: :ugeek:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[url] ist eingeschaltet
Smileys sind eingeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von aporsol » Di 12. Jan 2021, 19:15

Ah okay, das ergibt natürlich Sinn.

Code: Alles auswählen

$destinationEncoding = 'CP858//IGNORE//TRANSLIT';
statt
$destinationEncoding = 'CP858';
Damit wird versucht unbekannte Zeichen durch enthaltene zu ersetzen, wenn das nicht geht werden sie einfach weggelassen.

Die Befehle {RAWH:41} und {RAWD:65} scheinen auch nicht zu funktionieren.
Mit linehascontent = true in Zeile 427 und 434 geht es.

Code: Alles auswählen

else if (self::startsWith($elemContent, "RAWD")) {
  $vals = self::getCommaSeparatedValuesOfElem($elemContent);
  return array("bytes" => $vals,"html" => "", "linehascontent" => false,"typeofentry" => "bytes");
}

Code: Alles auswählen

else if (self::startsWith($elemContent, "RAWD")) {
  $vals = self::getCommaSeparatedValuesOfElem($elemContent);
  return array("bytes" => $vals,"html" => "", "linehascontent" => true,"typeofentry" => "bytes");
}

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von pichel » Mi 6. Jan 2021, 21:13

Hi,

danke für den Code-Snippet. Ich baue es für die nächste Version gerne ein.

Zu der Frage, ob das nicht der Druckerserver übernehmen kann. Prinzipiell geht das natürlich und so war es auch bis zur Version 1.0. Aber das bedeutet, dass ich bei Änderungen immer sowohl den Javaprinter als auch den Windows-Printserver anpassen und bauen musste. Je weniger "Intelligenz" die Druckerserver haben, desto seltener ist es auch für den Anwender notwendig, dass er diesen bei einem Versionsupdate updaten muss.

Irgendwann werde ich es auch einbauen, dass nach einem Update die Mitteilung kommt, welche Komponenten auch aktualisiert werden müssen. Im Moment gibt es da ja nur eine statische ganz allgemeine Meldung.

Gruß,

Stefan

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von aporsol » Mo 4. Jan 2021, 21:56

Hallo,

in der Version 2.0.13 hast du das Regex Problem gelöst, aber noch nicht das mit der Codepage.
Das € Zeichen ist nur in CP858 enthalten, es wir aber nur CP437 benutzt.
Deshalb wird nichts von der Funktion asciiEncodeStringTo437 zurückgegeben.
Mit folgender Änderung können auch Zeichen aus CP858 gedruckt werden, solange nur Zeichen davon enthalten sind.

Code: Alles auswählen

private static function asciiEncodeStringTo437($string)
{
	$sourceEncoding = self::detect_encoding($string);
	$destinationEncoding = 'CP437'; // Extended ASCII - Codepage 437
	$stringout = iconv($sourceEncoding, $destinationEncoding, $string);
	if ($stringout == false) {
		$destinationEncoding = 'CP858';
		$stringout = iconv($sourceEncoding, $destinationEncoding, $string);
		if ($stringout != false) {
			$stringout = "\et\x13" . $stringout . "\et\0"; //activate Codepage 858 (No. 19(\x13)) then reset to Codepage 437 (No. 0(\0)) epson esc/pos codes
		}
	}
	return $stringout;
}
Ist es notwendig alles vorher in ESC/Pos umzuwandeln oder kann das nicht der Druckertreiber übernehmen?

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von pichel » Sa 5. Dez 2020, 11:17

Hallo Apersol,

vielen Dank für deinen Beitrag mit der Lösung. Stimmt, da habe ich wohl etwas geschludert beim Zusammenbasteln der Regex. Wahrscheinlich sollte ich mir auch die anderen Regex-Ausdrücke im Code anschauen...

@Anwender: Nur zur Info.. Ich werde eine neue Version mit einem Bugfix für dieses Problem aus zeitlichen Gründen vermutlich nicht vor Weihnachten bereitstellen.

Gruß,

Stefan

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von aporsol » Fr 4. Dez 2020, 23:54

Hallo,

das erste Problem ist das Regex in der php/utilities/layouter.php in der Funktion getParts Zeile 568:

Code: Alles auswählen

preg_match_all('/\{[a-zA-Z0-9éöäüÖÄÜß_\'":\-=\+%\.,\/\(\) ]*\}/', $line, $matches); 
Hier werden nicht alle möglichen Zeichen zugelassen.
Ersetzt mit:

Code: Alles auswählen

preg_match_all('/\{[a-zA-Z0-9â`<>éöäüÖÄÜß_\'":\-=\+%\.,\/\(\) ]*\}/', $line, $matches); 
werden die Zeichen <> ` â gedruckt.

Du kannst andere fehlenden Zeichen hinzufügen und hier https://de.functions-online.com/preg_match_all.html testen,
ob das Regex es funktioniert.

Das zweite Problem ist, dass die Zeichen: € ´ ‘ nicht in der Codepage 437 sind.
So wie es aktuell ist müssen die Zeichen in ASCII oder der Codepage 437 enthalten sein, sonst wird es nicht gedruckt.
Wenn du Zeichen der Codepage 858 und keine der 437 kann man das ändern.

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von pichel » Do 3. Dez 2020, 21:28

Tja, ich habe noch keine Zeit gehabt, mich darum zu kümmern. Aber um Weihnachten herum werde ich bestimmt ein wenig Zeit finden...

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von CafeCafe » Mo 30. Nov 2020, 09:26

Ergänzung: "€" und "â" gehen auch nicht.

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von pichel » Sa 17. Okt 2020, 13:28

Hallo,

in den 1.x Versionen wurden die Inhalte der Variablen jeweils im Druckerserver ausgewertet, ab 2.x macht das nun der Webserver (Datei layouter.php). Ich habe mir das notiert und werde es mir demnächst anschauen. Für jetzt bleibt dann wohl nur der Workaround, die Artikel ohne diese Problemzeichen zu benennen.

Gruß,

Stefan

Re: 2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von os_user » Do 15. Okt 2020, 09:29

Hallo,
ich meine mich zu erinnern, dass mit dem Update auf Version 2 auch bei größer/kleiner-Zeichen dieses Problem aufgetreten ist. Wahrscheinlich könnte die gleiche Ursache dahinterstecken.

2.0.9: Produkte mit Sonderzeichen (Ticks, Backticks, etc.) werden nicht auf den Bons gedruckt

von bombjack » Mi 14. Okt 2020, 21:15

Hallo Stephan,

ich habe festgestellt, daß einige Produktnamen seit dem Update auf 2.x nicht mehr ausgedruckt werden.
Nach Prüfung der Namen stellte sich heraus, daß Ticks, Backticks und bestimmte Apostrophe (die eigentlich gar keine sind) dafür verantwortlich waren.
Ich meine solche Zeichen:

Code: Alles auswählen

´  `  ‘
Nach Entfernen der Zeichen funktioniert es wieder.
In 1.x lief es aber auch so.

Ich vermute mal, daß die Zeichenketten da nicht escaped werden und es deswegen zu der Fehlfunktion kommt.

Beste Grüße
Björn

Nach oben