2013-08-29 3 views
4

J'écris du code pour imprimer des étiquettes pour des jardins botaniques. Chaque étiquette est imprimée individuellement mais avec des informations différentes sur chaque étiquette. Chaque étiquette contient un nom scientifique qui peut varier considérablement en taille et peut ainsi dépasser 2 lignes (la taille de notre étiquette est de 10 cm de large sur 2,5 cm de haut). Notre problème se produit principalement avec le nom lorsque nous dépassons 24 caractères (voir ligne avec **). Si nous choisissons un nom de 24 caractères ou moins, il s'imprime bien. Plus rien ne sera imprimé. Si nous retirons tous les autres "items" de l'étiquette et laissons juste l'élément "name", alors il imprime seulement les 24 premiers caractères et tronque le reste (nous l'avons fait pour tester si un chevauchement possible entre notre bloc FB et un autre élément pourrait être à l'origine de ce problème). Nous avons essayé ceci avec d'autres éléments qui utilisent un FB et nous avons constaté qu'ils affichaient le même comportement mais variait dans la longueur de ce problème: par exemple, "cc" (abréviation de code de pays) avait une limite de 21 caractères. Pour plus d'informations: nous compilons ce code dans un environnement BASIC et utilisons des variables telles que ": name:", ": Acc.dt": "comme vu ci-dessous. Notre base de données fournit cette information et nous avons vérifié pour tout routines internes qui auraient tronqué des noms longs etc. Notre code fonctionnait bien dans ZPL mais nous avons récemment dû passer à ZPL II (nous avons acheté un nouveau modèle GX430t) et avons dû modifier notre code ZPL à quel point ce problème a commencé à se produire.Le langage de programmation Zebra (ZPL) II utilisant^FB ou^TB tronque le texte à des longueurs spécifiques

Voici notre code:

^XA 
^LH40,40 
^MMT 
^PW1200 
^LL1200 
^FO16,05^A0N,35,^FDAcc. num.^FS 
^FO170,05^A0,35,^FV":accnum:"^FS 
^FO360,05^A0,35,^FV":qual:"^FS 
^FO350,35^A0N,30,^FDAcc.dt.^FS 
^FO450,35^A0N,30,^FB790,3,0,L, 
^FH\^FV":accdt:"^FS 
^FO430,70^^A0N,25,^FB790,3,0,L, 
^FH\^FDProv. type^FS 
^FO560,70^A0N,25,^FV":provtype:"^FS 
^FO800,225^A0N,30,^FB790,3,0,L, 
^FV":cc:"^FS 
**^FO10,100^A0N,40,^FB790,3,0,L, 
^FV":name:"^FS** 
^FO1000,05^A0,35,^FV":proptype:"^FS 
^FO5,225^A0,25^FVColl.^FS 
^FO55,225^A0,25^FV":coll:"^FS 
^FO375,225^A0,25,^FV":consstat:"^FS 
^FO1000,70^A0,25,^FV":reqby:"^FS 
^FO535,180^BCN,55,N,N,N^FV":qual:"^FS 
^FO60,45^BCN,35,N,N,N^FV":accnum:"^FS 
^PQ1,0,1,Y 
^XZ 

Voici ce que nous avons essayé de résoudre ce problème (mes excuses si certains semblent comme jokers):

  1. Modification du type, de la taille et de l'emplacement de la police sur l'étiquette;
  2. Modification de^FO à^FT;
  3. Considéré notre logique de base de données interne;
  4. Enlever^FH \;
  5. Modification des valeurs dans la ligne^FB (nous avons essayé presque toutes les permutations possibles);
  6. Tapez manuellement un nom de plus de 24 caractères (en utilisant le bloc-notes - pas de base de données/compilateur) - même problème.

Toute réflexion sur ce serait grandement apprécié Kerry

+0

Comment écrire un texte en gras dans zpl? – ArgaPK

Répondre

1

J'ai eu ce problème avant, et à travers les fabricants d'imprimantes, et micrologiciels langues. Tout d'abord, quelques explications paraphrasées tout droit sorties du Guide de programmation ZPL II 2014 (P1012728-008 Rév. A).

« Les ^commande imprime TB un bloc de texte avec une largeur définie et la hauteur. Le bloc de texte a une fonction word-wrap automatique. Si le texte dépasse la hauteur du bloc, le texte est tronqué. »

« La commande ^FB (bloc champs) vous permet d'imprimer du texte dans un format de type bloc défini. Il peut formater une ^FD chaîne (Champ de données) dans un bloc de texte en utilisant l'origine , police, et rotation spécifié pour la chaîne de texte, et il contient une fonction automatique de retour à la ligne."

Techniquement, la différence entre un bloc de texte et un bloc de champ est que la hauteur est en points pour le premier et dans lignes pour ce dernier.

Notez également que, bien que non mentionné, la commande ^FB tronque également le texte qui ne rentre pas dans le nombre de lignes spécifié, et voici où la taille de la police de la commande A0 et l'interlignage du La commande FB joue maintenant un rôle important dans la détermination d'afficher ou de tronquer cette deuxième ou troisième ligne. Incidemment, dans d'autres langages tels que TSPL, il n'y a pas de troncature de blocs de texte - si vous dites que le bloc est de 3 lignes de hauteur mais qu'il y a suffisamment de texte pour 4 lignes, ligne 4 chevauche la ligne 3 pour indiquer this-- ce qui peut sembler horrible, mais c'est mieux que la perte de données de troncature, ce qui n'est pas évident.

Pour les deux commandes:

  • « Utilisation ^FT (Champ Typeset) pour vos données prend l'origine de base de la dernière ligne possible du texte, ce qui signifie que le bloc de champ sera rempli de bas en haut." "A l'aide de ^FO (Origine du champ) signifie que le bloc de champ sera rempli de haut en bas."

En réalité, je n'ai été en mesure de faire le travail de commande ^FB comme prévu, mais peut-être parce ^TB n'est pas mis en œuvre dans le firmware que j'ai travaillé avec (ZPL II imprimantes Bluetooth "conformes").

Vous pouvez tester l'extrait suivant pour une étiquette de 2x2 dans le Labelary Viewer:

^XA 
    ~TA0 
    ^MTD 
    ^MNW 
    ^MMT 
    ^MFN 
    ~SD15 
    ^PR6 
    ^PON 
    ^PMN 
    ^PW406 
    ^LS0 
    ^LRN 
    ^LL406 
    ^LT0 
    ^LH0,0 
    ^CI0 
^XZ 
^XA 
    ^FO324,10,0^FB386,2,0,C,0^A0R,36,28.8^FH^FD"The King" Cupcake^FS 
    ^FO278,10,0^FB386,1,0,C,0^A0R,28,22.4^FH^FDUse By 11/24/2015 02:45 PM^FS 
    ^FO152,10,0^FB386,1,0,C,0^A0R,24,19.2^FH^FD11/24/2015 02:45 PM^FS 
    ^FO62,140,0^FB250,1,0,R,0^A0R,24,19.2^FH^FDSL: 4 hours^FS 
    ^FO38,10,0^FB386,1,0,L,0^A0R,18,14.4^FH^FDPREP DATE:^FS 
    ^FO8,10,0^FB386,1,0,L,0^A0R,28,22.4^FH^FD11/24/2015 10:45 AM^FS 
    ^FO62,10,0^FB50,1,0,L,0^A0R,24,19.2^FH^FDEMP:^FS 
    ^FO92,10,0^FB376,3,0,J,0^A0R,18,14.4^FH^FDIngredients: 1 1/2 cups all-purpose flour, 1 teaspoon baking powder, 1/2 teaspoon salt, 8 tablespoons (1 stick) unsalted butter, room temperature, 1 cup sugar, 3 large eggs, 1 1/2 teaspoons pure vanilla extract, 3/4 cup milk.^FS 
    ^PQ3,,,Y 
^XZ 

Je suis le A0 précédé et FD commandes, en particulier, avec FB. Utilisation de la visionneuse, vous pouvez tester rapidement les effets du changement de FT et FO dans la ligne des ingrédients, les effets de la modification des tailles de police A0 et les effets de la modification du FB nombre de lignes de dire 3 à 2 (le spectateur ne tronque pas le texte btw).

Bien sûr, il n'y a pas de correspondance pour imprimer réellement une étiquette, car votre imprimante «conforme» ZPL II peut tronquer ou non le texte en fonction de sa version du fabricant et du micrologiciel.

J'espère que cela aide!

+0

comment pouvons-nous écrire un texte en gras dans zpl ?? – ArgaPK

+0

Le texte en gras et en italique permet de télécharger une police différente et de la sélectionner ensuite. – thor2k

+0

pouvez-vous s'il vous plaît me donner un exemple de code ou se référer à un lien pour que je reçoive de l'aide à partir de – ArgaPK

Questions connexes