2012-11-30 11 views
5

Ich verwende PPLA-Sprache, um Etiketten direkt auf einem ARGOX OS-214 zu drucken.Word Wrap Text in ARGOX OS214 - PPLA

Wie kann ich lange Texte umschreiben?

Muss ich die Berechnungen durchführen oder gibt es irgendeine Funktion, die das für mich tut?

Wenn ich berechnen muss, haben Sie irgendwelche Tipps, wie es geht?

Antwort

3

In der PPLA language manual gibt es keine Funktionen zum Zeilenumbruch langer Textzeilen. Sie müssen also selbst berechnen, wo die Zeilenumbrüche eingefügt werden sollen, bevor Sie die Befehle an den Drucker senden.
Wie Sie es tun, hängt von der Programmiersprache ab, die Sie verwenden; Zum Beispiel in der PHP-Sprache gibt es eine wordwrap function, die es für Sie tun kann (der C-Quellcode der Wordwrap-Funktion ist here, in Zeile 803).
Eine einfache Beschreibung eines Zeilenumbruch-Algorithmus auf dem wikipedia gefunden werden kann:

SpaceLeft := LineWidth 
for each Word in Text 
    if (Width(Word) + SpaceWidth) > SpaceLeft 
     insert line break before Word in Text 
     SpaceLeft := LineWidth - Width(Word) 
    else 
     SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth) 

Zunächst einmal müssen Sie den Text in Worte geteilt, aber ich nehme an, dass dies für Sie kein Problem ist, so Ich werde nicht weiter ausführen.
LineWidth sollte als die Etikettenbreite minus der linken und rechten Randbreite berechnet werden.
Angenommen, Sie verwenden für Ihren Text eine einzelne Schriftart mit fester Breite (nicht proportional), können Sie die LineWidth in eine Anzahl von Zeichen konvertieren, indem Sie sie einfach durch die Zeichenbreite teilen (oder einfach eine lange Textzeile drucken) und dann die Anzahl der Zeichen zählen, die gedruckt werden); Auf diese Weise entspricht jede Wortlänge der Anzahl ihrer Zeichen.
Andernfalls, wenn Sie eine proportionale Schriftart verwenden, ist die Berechnung jeder Wortbreite schwieriger, es sei denn, Sie kennen die Breite jedes Zeichens.
Eine Idee könnte ein Bild mit der gleichen Pixelgröße des Etiketts sein, nur um das Drucken zu simulieren und um zu berechnen, wo die Zeilenumbrüche einzufügen sind, aber dies erfordert eine Funktion zur Berechnung der Pixelbreite jedes Wortes (z Beispiel in PHP gibt es die imagettfbbox function), und auch genau die gleiche Schriftart auf dem Drucker und dem PC zu verwenden.
Beachten Sie, dass Sie auch einige Wörter verarbeiten müssen, die länger als die Etikettenbreite sind. In diesem Fall müssen Sie das Wort einfach unter LineWidth teilen und in der nächsten Zeile fortfahren.