Imprimer une étiquette sur Zebra en Sqr
Posted on Thursday 20 March 2008, 06:01 - Peoplesoft - Permalink Tweet
- Article
- |
- Comments(0)
- |
- Attachments(2)
Voici un morceau de code illustrant comment générer un programme ZPL2 en sqr, afin d'imprimer une étiquette sur une imprimante Zebra. L'exemple ci-après imprime une étiquette contenant du texte, deux codes barre et un cadre.
^XXparm0,parm1,parm3
Où XX est
le nom de l'instruction, et parmx sont les paramètres. Pour plus de détails sur
ce langage, vous trouverez facilement la documentations sur le site de
Zebra.L'unité utilisée pour les coordonnées sur l'étiquette est le pixel. Tout dépend donc de la résolution de l'imprimante, généralement définie en points par pouce (DPI). Ici j'utilise une fonction qui se charge de la conversion de cm à pixel, en utilisant un dpi paramétré à 300.
!----------------------------------------------------------------------!
! Author : Jean-Baptiste
Heren
!
! Procedure print-zebra-tag
!
!----------------------------------------------------------------------!
! Description: Print Tags on a Zebra
Printer
!
!----------------------------------------------------------------------!
begin-procedure print-zebra-tag
! Set Filename
let $filepath = RTRIM($filepath,' ')
if substr($filepath,length($filepath),1) <> '\'
let $filepath = $filepath || '\'
end-if
let $filename = $barcode_value || '.txt'
let $filename = $filepath || $filename
! Open File
open $filename as 1 for-writing record=1000:vary
status=#filestat
if #filestat <> 0
SHOW 'Could not Open File ' $filename
else
! Get Positions in Pixels
do cm-to-pixels(5 ,#YLABEL)
do cm-to-pixels(18 ,#XLABEL)
! cols
do cm-to-pixels(0.5,#XCOL0)
do cm-to-pixels(3 ,#XCOL1)
do cm-to-pixels(6 ,#XCOL2)
do cm-to-pixels(12 ,#XCOL3)
! Lines
do cm-to-pixels(1.5,#YGZONE)
do cm-to-pixels(0.1,#YLINE6)
do cm-to-pixels(0.3,#YLINE5)
do cm-to-pixels(1 ,#YLINE4)
do cm-to-pixels(1.8,#YLINE3)
do cm-to-pixels(2.6,#YLINE2)
do cm-to-pixels(3.4,#YLINE1)
do cm-to-pixels(4.3,#YLINE0)
let $label_format =
'^XA^LRN^FWR^CF0,52,39^LH20,20^PON'
let
$heading = '^FO'|| TO_CHAR(#YLINE0) ||','||
TO_CHAR(#XCOL0) || '^CF0,52,39^FD' || 'Address : ' || $LOCAL_ADDRESS || ' Tel:
'|| $LOCAL_PHONE || ' Fax: ' || $LOCAL_FAX ||'^FS'
let
$line1_1 = '^FO'|| TO_CHAR(#YLINE1) ||','||
TO_CHAR(#XCOL1) || '^CF0,65,52^FD' || 'Ref :' || '^FS'
let
$line1_2 = '^FO'|| TO_CHAR(#YLINE1) ||','||
TO_CHAR(#XCOL2) || '^CF0,65,52^FD' || $inv_item_id || ', Rev ' || $revision ||
'^FS'
let
$line1_3 = '^FO'|| TO_CHAR(#YLINE1) ||','||
TO_CHAR(#XCOL3) || '^B3,,110,Y^FD' || $inv_item_id || '^FS'
let
$line2_1 = '^FO'|| TO_CHAR(#YLINE2) ||','||
TO_CHAR(#XCOL1) || '^CF0,52,39^FD' || 'Designation :' || '^FS'
let
$line2_2 = '^FO'|| TO_CHAR(#YLINE2) ||','||
TO_CHAR(#XCOL2) || '^CF0,52,39^FD' || $ITEM_DESCR || '^FS'
let
$line3_1 = '^FO'|| TO_CHAR(#YLINE3) ||','||
TO_CHAR(#XCOL1) || '^CF0,52,39^FD' || 'Quantite :' || '^FS'
let
$line3_2 = '^FO'|| TO_CHAR(#YLINE3) ||','||
TO_CHAR(#XCOL2) || '^CF0,52,39^FD' || To_CHAR(#QtyOnTag) || '^FS'
let
$line4_1 = '^FO'|| TO_CHAR(#YLINE4) ||','||
TO_CHAR(#XCOL1) || '^CF0,52,39^FD' || 'N. Lot :' || '^FS'
let
$line4_2 = '^FO'|| TO_CHAR(#YLINE4) ||','||
TO_CHAR(#XCOL2) || '^CF0,52,39^FD' || $barcode_value || '^FS'
let
$line4_3 = '^FO'|| TO_CHAR(#YLINE4) ||','||
TO_CHAR(#XCOL3) || '^B3,,110,Y^FD' || $barcode_value || '^FS'
let
$line5_1 = '^FO'|| TO_CHAR(#YLINE5) ||','||
TO_CHAR(#XCOL1) || '^CF0,52,39^FD' || 'Date :' || '^FS'
let
$line5_2 = '^FO'|| TO_CHAR(#YLINE5) ||','||
TO_CHAR(#XCOL2) || '^CF0,52,39^FD' || $SysDateTime || '^FS'
! Graphics
let $graphic_box = '^FO0,0^GB'
|| TO_CHAR(#YLABEL) || ','|| TO_CHAR(#XLABEL) || ',5^FS'
let $graphic_line = '^FO0,0^GB0,' ||
TO_CHAR(#YLABEL) || ',5^FS'
let $label_end =
'^XZ'
let $LINE = $label_format || $heading ||
$line1_1 || $line1_2 || $line1_3 || $line2_1 || $line2_2 || $line3_1 ||
$line3_2 || $line4_1 || $line4_2 || $line4_3 || $line5_1 || $line5_2 ||
$graphic_box || $graphic_line || $label_end
! Write File
#DEBUG SHOW 'Zebra data : ' $LINE
write 1 from $LINE
end-if
CLOSE 1
end-if
end-procedure
!----------------------------------------------------------------------!
! Author : Jean-Baptiste
Heren
!
! Procedure To convert cm to pixels using a DPI fixed
parameter !
! Cette procédure convertit des cm en Pixels suivant un dpi paramétré
!
!----------------------------------------------------------------------!
begin-procedure cm-to-pixels(#cm, :#pixels)
! This Could be also a parameter
let #dpi = 300
! Conversion
let #inches = #cm *0.39
! Rounding
let #pixels = round(#dpi * #inches,0) ! Integer divide
end-procedure