Barcodes (Code 39) als PDF
Verfasst: 28.01.2006 20:39
Vielleicht kann das ja jemand gebrauchen.
Der Code benötigt PurePDF, das allerdings in PBOSL enthalten ist und somit kein Problem darstellen sollte.
Der Code benötigt PurePDF, das allerdings in PBOSL enthalten ist und somit kein Problem darstellen sollte.
Code: Alles auswählen
;/ Barcodes Code39 als PDF
;/ (basiert auf dem Code von Num3)
;/ Thorsten Hoeppner - Januar 2006
;- Benötigte PurePDF-Libary (enthalten in PBOSL)
Structure C39
Char.s
Def.s
EndStructure
Dim CODE39.C39 (43)
#CharH = 5
;{ Definitionen Code39
CODE39(0)\Char = "0" : CODE39(0)\Def = "1113313111"
CODE39(1)\Char = "1" : CODE39(1)\Def = "3113111131"
CODE39(2)\Char = "2" : CODE39(2)\Def = "1133111131"
CODE39(3)\Char = "3" : CODE39(3)\Def = "3133111111"
CODE39(4)\Char = "4" : CODE39(4)\Def = "1113311131"
CODE39(5)\Char = "5" : CODE39(5)\Def = "3113311111"
CODE39(6)\Char = "6" : CODE39(6)\Def = "1133311111"
CODE39(7)\Char = "7" : CODE39(7)\Def = "1113113131"
CODE39(8)\Char = "8" : CODE39(8)\Def = "3113113111"
CODE39(9)\Char = "9" : CODE39(9)\Def = "1133113111"
CODE39(10)\Char = "A" : CODE39(10)\Def = "3111131131"
CODE39(11)\Char = "B" : CODE39(11)\Def = "1131131131"
CODE39(12)\Char = "C" : CODE39(12)\Def = "3131131111"
CODE39(13)\Char = "D" : CODE39(13)\Def = "1111331131"
CODE39(14)\Char = "E" : CODE39(14)\Def = "3111331111"
CODE39(15)\Char = "F" : CODE39(15)\Def = "1131331111"
CODE39(16)\Char = "G" : CODE39(16)\Def = "1111133131"
CODE39(17)\Char = "H" : CODE39(17)\Def = "3111133111"
CODE39(18)\Char = "I" : CODE39(18)\Def = "1131133111"
CODE39(19)\Char = "J" : CODE39(19)\Def = "1111333111"
CODE39(20)\Char = "K" : CODE39(20)\Def = "3111111331"
CODE39(21)\Char = "L" : CODE39(21)\Def = "1131111331"
CODE39(22)\Char = "M" : CODE39(22)\Def = "3131111311"
CODE39(23)\Char = "N" : CODE39(23)\Def = "1111311331"
CODE39(24)\Char = "O" : CODE39(24)\Def = "3111311311"
CODE39(25)\Char = "P" : CODE39(25)\Def = "1131311311"
CODE39(26)\Char = "Q" : CODE39(26)\Def = "1111113331"
CODE39(27)\Char = "R" : CODE39(27)\Def = "3111113311"
CODE39(28)\Char = "S" : CODE39(28)\Def = "1131113311"
CODE39(29)\Char = "T" : CODE39(29)\Def = "1111313311"
CODE39(30)\Char = "U" : CODE39(30)\Def = "3311111131"
CODE39(31)\Char = "V" : CODE39(31)\Def = "1331111131"
CODE39(32)\Char = "W" : CODE39(32)\Def = "3331111111"
CODE39(33)\Char = "X" : CODE39(33)\Def = "1311311131"
CODE39(34)\Char = "Y" : CODE39(34)\Def = "3311311111"
CODE39(35)\Char = "Z" : CODE39(35)\Def = "1331311111"
CODE39(36)\Char = "-" : CODE39(36)\Def = "1311113131"
CODE39(37)\Char = "." : CODE39(37)\Def = "3311113111"
CODE39(38)\Char = " " : CODE39(38)\Def = "1331113111"
CODE39(39)\Char = "$" : CODE39(39)\Def = "1313131111"
CODE39(40)\Char = "/" : CODE39(40)\Def = "1313111311"
CODE39(41)\Char = "+" : CODE39(41)\Def = "1311131311"
CODE39(42)\Char = "%" : CODE39(42)\Def = "1113131311"
CODE39(43)\Char = "*" : CODE39(43)\Def = "1311313111"
;} -------------------------------
Procedure AscTo39(c.s)
AscTo39 = -1
If c >= "0" And c <= "9"
AscTo39 = Val(c)
Else
c = UCase(c)
If c >= "A" And c <= "Z"
AscTo39 = Asc(c) - 55
Else
Select c
Case "-"
AscTo39 = 36
Case "."
AscTo39 = 37
Case " "
AscTo39 = 38
Case "*"
AscTo39 = 43
Case "$"
AscTo39 = 39
Case "/"
AscTo39 = 40
Case "+"
AscTo39 = 41
Case "%"
AscTo39 = 42
EndSelect
EndIf
EndIf
ProcedureReturn AscTo39
EndProcedure
Procedure.f CreateCodeBar39(x.f, y.f, h.f, wf.f, text.s, tf.b)
DefType.f xpos, ypos
xpos = x ; Offset von Links
ypos = y ; Offset von oben
wf = wf * 0.1 ; Breite eines Balkens
chrspace.f = wf*16
text = "*"+Trim(text)+"*"
width.f = Len(text)*wf*16 ; 1 BarUnit = 16 * BarWidth
If tf : height.f = h + #CharH : Else : height.f = h : EndIf
For tpos = 1 To Len(text)
char$ = Mid(text, tpos, 1)
N39 = AscTo39(char$)
For dpos = 1 To 10 Step 2
; Draw line for bar -----------
w.f = Val(Mid(CODE39(N39)\Def, dpos, 1)) ; BarWidth
pdf_Rect(xpos, ypos, w * wf, h, #PDF_STYLE_FILL)
xpos + (w * wf)
; Space -----------
xpos + Val(Mid(CODE39(N39)\Def, dpos+1, 1)) * wf
; Text ----------
If tf ; Human Readable
pdf_SetXY(x+chrspace*(tpos-1), ypos + h)
pdf_Cell(chrspace, #CharH , UCase(char$), 0, 0, #PDF_ALIGN_CENTER)
EndIf
Next
Next
EndProcedure
; =========================
; Parameter:
; x (mm) / y (mm) / Höhe (mm) / Breite der Balken (2 => 0.2mm) / Text / 0 = nur Barcode, 1 = mit Text
; Start PDF ------------
pdf_Create("p", "mm")
pdf_AddPage()
pdf_SetFont("Arial","",10)
; ------------------------------
CreateCodeBar39(20, 20, 15, 2, "Barcode Code39", 1)
; End PDF --------------
pdf_Save("BarCode.pdf")
; -------------------------