Moderator: Moderatoren


oFont := XbpFont():new():create( "18.Courier New" )
GraSetFont( oPs, oFont )
aZPos[01]-=10
GraStringAt( oPS, aZPos , aSaetze[i][1] )
aZPos[02]-=25
aZPos[01]+=10
GraStringAt( oPS, aZPos , aSaetze[i][2] )
aPos[02]:=aZPos[02]-85
oFont := XbpFont():new():create( "26.Arial" )
oFont:bold:=.t.
oFont:configure()
GraSetFont( oPs, oFont )
GraStringAt( oPS, aNrPos , aSaetze[i][11] )
If aSaetze[i][12]="000"
Else
aNrPos[02]-=25
oFont := XbpFont():new():create( "18.Arial" )
GraSetFont( oPs, oFont )
GraStringAt( oPS, aNrPos , aSaetze[i][12] )
aNrPos[02]+=25
EndIf
// Barcode-Berechnung
oFont := XbpFont():new():create( "40.Arial" )
GraSetFont( oPs, oFont )
uEan13_Nr:=aSaetze[i][3]+aSaetze[i][4]+aSaetze[i][10]
uEan13_Nr+=GraBarcodeEAN13_CalcCheckDigit(uEan13_Nr)
// Startblock start sentinel - linker Anfang
cBarCodeBlock := "101"
// 1. Stelle EAN13 wird nicht verschlsselt, LAND 1. Stelle
// sondern entscheidet odd/even Folge bei LEFT-HAND !
cFirstDigit := left(uEAN13_Nr,1)
// 2. Stelle EAN13 wird immer ODD verschlsselt LAND 2. Stelle
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,2,1)+"O")
// 3. - 7 Stelle EAN13 Manufakturer 5 Ziffern
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,3,1)+ ;
GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,1))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,4,1)+ ;
GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,2))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,5,1)+ ;
GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,3))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,6,1)+ ;
GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,4))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("L"+substr(uEAN13_Nr,7,1)+ ;
GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,5))
// Mittlerer Trennblock CENTER GUARD BARS
cBarCodeBlock += "01010"
// 8. - 12. Stelle EAN13 PRODUKT 5 Ziffern
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,8,1))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,9,1))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,10,1))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,11,1))
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,12,1))
// 13. Stelle CheckDigit immer als RightHand verschlsseln
cBarCodeBlock += GraBarcodeEAN13_EncodingTable("R"+substr(uEAN13_Nr,13,1))
// Endeblock RIGHT GUARD BARS
cBarCodeBlock += "101"
nBarCodeBlockLen := len(cBarCodeBlock)
// print the bars !
for z := 1 to nBarCodeBlockLen
if substr(cBarCodeBlock,z,1)="1" // drucken
// Anzahl Striche vor diesem * Strichbreite = Startwert fr aktuellen Strich
x := aPos[1] + (nBarLeftBlankLines + z-1 ) * nBarLineDim
if z <= 3 .or. (z > 3+6*7 .and. z <= 3+6*7+5) .or. z > 3+6*7+5+6*7
// Strich ist ein langer Strich da kein Datenbereich
y := aPos[2] + nBarLongLineOffset
else
// Datenbereich, kurzer Strich
Y := aPos[2] + nBarShortLineOffset
endif
if z = nBarCodeBlockLen .or. substr(cBarCodeBlock,z+1,1)="1"
GraBox( oPS, {x,y}, {x+nBarLineDim,aPos[2]+nSizeY-nBarTopMargin},GRA_FILL )
else
GraBox( oPS, {x,y}, {x+nBarLineDimPrint,aPos[2]+nSizeY-nBarTopMargin},GRA_FILL )
endif
endif
next
aPos[1]+=460
oFont := XbpFont():new():create( "20.Arial" ) // vorher 19 wunsch Linda
GraSetFont( oPs, oFont )
cZeile3:=aSaetze[i][7]+"<"+aSaetze[i][8]+"> "+substr(aSaetze[i][4],1,3)+"-"+;
substr(aSaetze[i][4],4,3)+"-"+substr(aSaetze[i][4],7,3)+" "+"<5-"+aSaetze[i][9]
aZPos[02]-=105
GraStringAt( oPS, aZPos , cZeile3 )
aZPos[02]-=45
cZeile4:=aSaetze[i][5]+space(3)+"EUR "+aSaetze[i][6]
oFont := XbpFont():new():create( "30.Arial" )
oFont:bold:=.t.
oFont:configure()
GraSetFont( oPs, oFont )
GraStringAt( oPS, aZPos , cZeile4 )
Function GraBarcodeEAN13_CalcCheckDigit(uEAN13_Nr) // gibt die CheckDigit als String zurck
// wegen fhrender 0 besser als String !
local x, lFehler := .f., nSummOdd, nSummEven, cOddEven, nCheckSummValue,;
cCheckSummValue, cCheckSummDigit,nCheckSummDigit
do case
case Valtype(uEAN13_Nr)="N"
uEAN13_Nr := left(alltrim(str(uEAN13_Nr,15,0)),12)
case Valtype(uEAN13_Nr)="C"
uEAN13_Nr := left(alltrim(uEAN13_Nr,15),12)
otherwise
* cCheckSummDigit := ERR_EAN13_DATATYPE
lFehler := .t.
endcase
if len(uEAN13_Nr) < 12 .and. ! lFehler // noch keine Fehlermeldung erhalten,
* cCheckSummDigit := ERR_EAN13_PARAMETER_LEN
lFehler := .t.
endif
if ! lFehler
nSummOdd := 0
nSummEven := 0
cOddEven := "E" // erste Position des EAN13 Strings ist per Definition EVEN !
for x := 1 to 12
if cOddEven = "E"
nSummEven += val(substr(uEAN13_Nr,x,1))
cOddEven := "O"
else
nSummOdd += val(substr(uEAN13_Nr,x,1))
cOddEven := "E"
endif
next
// CheckSummDigit ist der Unterschied von nCheckSummValue zum n„chsten vollen 10er.
nCheckSummValue := nSummEven + nSummOdd * 3 // Gewichtung der Odd Position mit 3
cCheckSummValue := right(alltrim(str(nCheckSummValue,15,0)),1) // letzte Position ermitteln
nCheckSummDigit := 10 - val(cCheckSummValue) // von 0->0 1->9 2->8 etc.
cCheckSummDigit := right(alltrim(str(nCheckSummDigit,3,0)),1)
endif
Return cCheckSummDigit
Function GraBarcodeEAN13_EncodingTable(cEncodeID)
local cReturnCode, x
// aCodeTable = Verschlsselungstabelle fr Links Odd/Even und Rechts je Ziffer
static aCodeTable := { { "L0O","0001101" } ,;
{ "L0E","0100111" } ,;
{ "L1O","0011001" } ,;
{ "L1E","0110011" } ,;
{ "L2O","0010011" } ,;
{ "L2E","0011011" } ,;
{ "L3O","0111101" } ,;
{ "L3E","0100001" } ,;
{ "L4O","0100011" } ,;
{ "L4E","0011101" } ,;
{ "L5O","0110001" } ,;
{ "L5E","0111001" } ,;
{ "L6O","0101111" } ,;
{ "L6E","0000101" } ,;
{ "L7O","0111011" } ,;
{ "L7E","0010001" } ,;
{ "L8O","0110111" } ,;
{ "L8E","0001001" } ,;
{ "L9O","0001011" } ,;
{ "L9E","0010111" } ,;
{ "R0" ,"1110010" } ,;
{ "R1" ,"1100110" } ,;
{ "R2" ,"1101100" } ,;
{ "R3" ,"1000010" } ,;
{ "R4" ,"1011100" } ,;
{ "R5" ,"1001110" } ,;
{ "R6" ,"1010000" } ,;
{ "R7" ,"1000100" } ,;
{ "R8" ,"1001000" } ,;
{ "R9" ,"1110100" } } // nur einmal erzeugen spart Zeit.
cEncodeID := upper(alltrim(cEncodeID))
x := AScan( aCodeTable, {|cTmp| cTmp[1] == cEncodeID } )
if x = 0
cReturnCode := "'cEncodeID'='"+cEncodeID+"' ist ungltig !"
else
cReturnCode := aCodeTable[x,2]
endif
Return cReturnCode
*------------------------------------------------------------------------------------------
Function GraBarcodeEAN13_Parity2EncodingTable(cFirstDigit,nManufakturerStelle)
local cReturnCode, x
// aCodeTable = Verschlsselungstabelle fr Links Odd/Even und Rechts je Ziffer
static aCodeTable := { { "0","O","O","O","O","O" } ,;
{ "1","O","E","O","E","E" } ,;
{ "2","O","E","E","O","E" } ,;
{ "3","O","E","E","E","O" } ,;
{ "4","E","O","O","E","E" } ,;
{ "5","E","E","O","O","E" } ,;
{ "6","E","E","E","O","O" } ,;
{ "7","E","O","E","O","E" } ,;
{ "8","E","O","E","E","O" } ,;
{ "9","E","E","O","E","O" } } // nur einmal erzeugen spart Zeit.
x := AScan( aCodeTable, {|cTmp| cTmp[1] == cFirstDigit } )
if x = 0
cReturnCode := "'cFirstDigit'='"+cFirstDigit+"' ist ungltig !"
else
cReturnCode := aCodeTable[x,nManufakturerStelle+1] // +1, da die ID auf 1. Stelle sitzt
endif
Return cReturnCode






















Wolfgang Ciriack hat geschrieben: die haben wohl die eingebaute Möglichkeit, Barcodes zu drucken.
)
' This selects EPSON PRINTER BARCODE to Code 39
LPRINT CHR$(27)+CHR$(16)+"A"+CHR$(8)+CHR$(2)+CHR$(0)+CHR$(0)+CHR$(5)+CHR$(1)+CHR$(1)+CHR$(1)+CHR$(1)
'This prints the contents of BARCODE$, 10 characters.
LPRINT CHR$(27)+CHR$(16)+"B"+CHR$(10)+BARCODE$
... CHR(27)+CHR(16)+"A"+CHR(8)+CHR(2)+CHR(0)+CHR(0)+CHR(5)+CHR(1)+CHR(1)+CHR(1)+CHR(1)cBarcode := "..."
... CHR(27)+CHR(16)+"B"+CHR(len(cBarcode))+cBarcode



oFontCode39 := xbpFont():new(oPS):create("12.Free 3 of 9 Extended")
oPS:device():startDoc('Journal')
GraSetFont(oPs, oFontCode39 )
GraStringAt(oPS,{10,12}, "!0123456789!")
hier http://www.squaregear.net/fonts/free3of9.shtml


Herbert hat geschrieben:Der Epson-Nadeldrucker ist doch auch unter Windows installierbar, das heisst mit entsprechenden Windows-Fonts ansprechbar?



brandelh hat geschrieben:Ja, aber die Windows Fonts auf einem Nadeldrucker sind nicht sehr effektiv und wenn er das schon eingebaut kann






Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast