June 12, 2017

Chinees printen met Zebra-printers

Als het gaat om het printen van niet-Latijnse talen, zoals Chinees of Hebreeuws, met behulp van industriële Zebra-printers en ZPL, wordt het al snel lastig. Er zijn verschillende manieren om dit probleem aan te pakken. In dit artikel beschrijven we in het kort de algemeen beschikbare oplossingen en bieden we inzicht in de manier waarop T2S met de kwestie omgaat in zijn etiketteringsoplossingen.

Judith de Witte

Chinees printen met Zebra-printers

Als het gaat om het printen van niet-Latijnse talen, zoals Chinees of Hebreeuws, met behulp van industriële Zebra-printers en ZPL, wordt het al snel lastig. Er zijn verschillende manieren om dit probleem aan te pakken.

In dit artikel beschrijven we kort de algemeen beschikbare oplossingen en bieden we inzicht in de manier waarop T2S de zaak behandelt in zijn etiketteringsoplossingen.

Zebra-printers kunnen worden bediend met een eigen taal genaamd ZPL (Zebra Programming Language). ZPL is een taal voor paginabeschrijvingen die uitstekend geschikt is voor het afdrukken van etiketten, vooral als ze nummerreeksen bevatten, zoals tellers of barcodes. Het wordt ook nagebootst in printers van andere fabrikanten, waardoor het in feite een soort industriestandaard is.

Als je ooit hebt geprobeerd om niet-Latijnse tekens af te drukken op een Zebra-printer met ZPL, heb je waarschijnlijk een label gekregen dat bedekt is met wartaal, of helemaal niets.

Het is waar dat Zebra-printers die zijn gebouwd voor specifieke markten (zoals Azië) vaak vooraf geladen lettertypen bevatten die regionaal relevante tekens bevatten.

Maar als je er geen hebt, wat zijn dan je keuzes?

Er is altijd de mogelijkheid om een lettertype te laden voor de specifieke taal die u wilt gebruiken. Met hulpmiddelen zoals de Zebra font downloader kunt u het lettertype correct coderen, zodat het door de printer begrepen kan worden.

En wat als je meerdere talen wilt gebruiken?

Lettertypen die een bredere subset van Unicode ondersteunen, zijn meestal vrij groot en het standaardgeheugen dat beschikbaar is op een Zebra-printer is vaak niet voldoende om ze op te slaan. Geheugen toevoegen aan een Zebra-printer is een optie, maar als je een groot aantal printers hebt, wordt het al snel lastig. Vanwege de kosten, maar ook vanwege het onderhoud: printers moeten vooraf worden geladen met grote bestanden; als u ze instelt en af en toe bijwerkt, wordt extra overheadkosten gegenereerd.

Dus hoe kunt u uw overheadkosten en kosten laag houden, terwijl u toch kunt profiteren van het volledige scala aan talen op uw Zebra-printer?

Toen we voor dezelfde uitdaging stonden in een van onze wereldwijd gebruikte etiketteringsoplossingen, One2Label Automation hebben we een aanpak bedacht waarmee we dynamisch gegenereerde ZPL konden blijven gebruiken zonder dat we ons zorgen hoefden te maken over de taal die werd gebruikt.

Onze etiketteringsoplossingen maken gebruik van een renderingcomponent die de inhoud van de printaanvraag onderzoekt, die wordt ingediend als een vereenvoudigd XML-formaat dat we de bijnaam Silfi hebben gegeven (Simplified layout format interface). Als blijkt dat die inhoud tekens bevat die niet worden ondersteund in de ingebouwde lettertypen van de Zebra-printer (laten we ze 'exotisch' noemen bij gebrek aan een beter woord), zet de renderer ze in een handomdraai om in bitmaps.

T2S One2Label

Bitmaps in een handomdraai gebruiken

Deze bitmaps worden correct gepositioneerd en verzonden als ZPL-inline-afbeeldingen (^GF-opdrachten voor de kenners). De renderer kan worden ingesteld om selectief „exotische” inhoud te converteren, maar ook om alle inhoud te converteren. Op deze manier kunnen mogelijke verschillen tussen het lettertype dat wordt gebruikt om de bitmap te genereren en de ingebouwde lettertypen worden geëlimineerd.

Een voorbeeld van dynamisch samengestelde ZPL waarbij de Engelse tekst duidelijk zichtbaar is in de ZPL-code, terwijl de equivalente Chinese tekst dynamisch is geconverteerd naar een bitmap (^GF).

Waarom converteer je niet het hele label naar een bitmap?

Om een aantal redenen. De belangrijkste is dat voor een bitmap een witte pixel hetzelfde „gewicht” heeft als een zwarte pixel. Met andere woorden, elke pixel is aanwezig in de bitmap. Witte pixels zijn ongetwijfeld minder belangrijk omdat ze niet worden afgedrukt. Door inhoud selectief te converteren, kunnen we het aantal niet-afdrukbare pixels minimaliseren om te coderen, zodat de gegevens die naar de printer worden gestuurd kleiner en dus sneller zijn.

We gebruiken dezelfde techniek om ter plekke gemaakte bitmaps te injecteren om te voorkomen dat pictogrammen vooraf moeten worden geladen en om barcodes af te drukken in symbologieën die niet standaard of voldoende worden ondersteund in ZPL.