2012-11-30 18 views
5

Używam języka PPLA do drukowania etykiet bezpośrednio na Argox OS-214.Zawijanie tekstu w Argox OS214 - PPLA

Jak mogę napisać długie teksty?

Czy muszę wykonywać obliczenia, czy jest jakaś funkcja, która to robi dla mnie?

Jeśli muszę obliczyć, czy masz jakieś wskazówki, jak to zrobić?

Odpowiedz

3

W PPLA language manual nie ma funkcji do zawijania długich linii tekstu, więc musisz sam obliczyć, gdzie wstawić znaki linii przed wysłaniem poleceń do drukarki.
Sposób wykonania zależy od używanego języka programowania; na przykład w języku PHP jest wordwrap function, który może to dla ciebie zrobić (kod źródłowy C funkcji wordwrap to here, w linii 803).
Prosty opis algorytmu owijania słowo można znaleźć na wikipedia:

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) 

Przede wszystkim, trzeba podzielić tekst w słowach, ale przypuszczam, że nie jest to problem dla ciebie, więc Nie będę się dalej rozwodzić.
LineWidth należy obliczyć jako szerokość etykiety minus szerokość lewego i prawego marginesu.
Zakładając, że dla tekstu używasz pojedynczej czcionki o stałej szerokości (nieproporcjonalnej), możesz przekonwertować liczbę LineWidth na liczbę znaków, dzieląc ją po prostu przez szerokość znaków (lub po prostu drukowując długą linię tekstu a następnie zliczanie liczby znaków, które zostaną wydrukowane); w ten sposób długość każdego słowa odpowiada liczbie jego znaków.
W przeciwnym razie, jeśli używasz czcionki proporcjonalnej, obliczanie szerokości każdego słowa jest trudniejsze, chyba że znasz szerokość każdego znaku.
Pomysł może polegać na użyciu obrazu o tym samym rozmiarze piksela etykiety, aby symulować drukowanie i obliczanie miejsc wstawiania linii, ale wymaga to funkcji do obliczania szerokości piksela każdego słowa (dla przykład w PHP jest imagettfbbox function), a także użycie dokładnie tej samej czcionki na drukarce i komputerze.
Pamiętaj, że możesz również obsługiwać słowa dłuższe niż szerokość etykiety; w tym przypadku musisz po prostu podzielić słowo na: LineWidth i przejść do następnego wiersza.

Powiązane problemy