rghost_barcode 0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (144) hide show
  1. data/lib/doc/classes/RGhost.html +109 -0
  2. data/lib/doc/classes/RGhost/Barcode.html +147 -0
  3. data/lib/doc/classes/RGhost/Barcode/Auspost.html +113 -0
  4. data/lib/doc/classes/RGhost/Barcode/Azteccode.html +113 -0
  5. data/lib/doc/classes/RGhost/Barcode/Base.html +266 -0
  6. data/lib/doc/classes/RGhost/Barcode/Base.src/M000004.html +34 -0
  7. data/lib/doc/classes/RGhost/Barcode/Base.src/M000005.html +30 -0
  8. data/lib/doc/classes/RGhost/Barcode/Base.src/M000006.html +20 -0
  9. data/lib/doc/classes/RGhost/Barcode/Border.html +170 -0
  10. data/lib/doc/classes/RGhost/Barcode/Border.src/M000001.html +27 -0
  11. data/lib/doc/classes/RGhost/Barcode/Code11.html +113 -0
  12. data/lib/doc/classes/RGhost/Barcode/Code128.html +113 -0
  13. data/lib/doc/classes/RGhost/Barcode/Code2of5.html +113 -0
  14. data/lib/doc/classes/RGhost/Barcode/Code39.html +113 -0
  15. data/lib/doc/classes/RGhost/Barcode/Code93.html +113 -0
  16. data/lib/doc/classes/RGhost/Barcode/Datamatrix.html +113 -0
  17. data/lib/doc/classes/RGhost/Barcode/Ean13.html +113 -0
  18. data/lib/doc/classes/RGhost/Barcode/Ean2.html +113 -0
  19. data/lib/doc/classes/RGhost/Barcode/Ean5.html +113 -0
  20. data/lib/doc/classes/RGhost/Barcode/Ean8.html +113 -0
  21. data/lib/doc/classes/RGhost/Barcode/Guard.html +174 -0
  22. data/lib/doc/classes/RGhost/Barcode/Guard.src/M000003.html +27 -0
  23. data/lib/doc/classes/RGhost/Barcode/Interleaved2of5.html +113 -0
  24. data/lib/doc/classes/RGhost/Barcode/Isbn.html +113 -0
  25. data/lib/doc/classes/RGhost/Barcode/Kix.html +113 -0
  26. data/lib/doc/classes/RGhost/Barcode/Maxicode.html +113 -0
  27. data/lib/doc/classes/RGhost/Barcode/Msi.html +113 -0
  28. data/lib/doc/classes/RGhost/Barcode/Onecode.html +113 -0
  29. data/lib/doc/classes/RGhost/Barcode/Parameter.html +262 -0
  30. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000007.html +20 -0
  31. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000008.html +18 -0
  32. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000009.html +18 -0
  33. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000010.html +18 -0
  34. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000011.html +18 -0
  35. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000012.html +24 -0
  36. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000013.html +18 -0
  37. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000014.html +18 -0
  38. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000015.html +16 -0
  39. data/lib/doc/classes/RGhost/Barcode/Pdf417.html +113 -0
  40. data/lib/doc/classes/RGhost/Barcode/Pharmacode.html +113 -0
  41. data/lib/doc/classes/RGhost/Barcode/Plessey.html +113 -0
  42. data/lib/doc/classes/RGhost/Barcode/Postnet.html +113 -0
  43. data/lib/doc/classes/RGhost/Barcode/Qrcode.html +113 -0
  44. data/lib/doc/classes/RGhost/Barcode/Rationalizedcodabar.html +113 -0
  45. data/lib/doc/classes/RGhost/Barcode/Raw.html +113 -0
  46. data/lib/doc/classes/RGhost/Barcode/Royalmail.html +113 -0
  47. data/lib/doc/classes/RGhost/Barcode/Rss14.html +113 -0
  48. data/lib/doc/classes/RGhost/Barcode/Rssexpanded.html +113 -0
  49. data/lib/doc/classes/RGhost/Barcode/Rsslimited.html +113 -0
  50. data/lib/doc/classes/RGhost/Barcode/Symbol.html +113 -0
  51. data/lib/doc/classes/RGhost/Barcode/Text.html +193 -0
  52. data/lib/doc/classes/RGhost/Barcode/Text.src/M000002.html +30 -0
  53. data/lib/doc/classes/RGhost/Barcode/Upca.html +113 -0
  54. data/lib/doc/classes/RGhost/Barcode/Upce.html +113 -0
  55. data/lib/doc/classes/RGhost/Config.html +150 -0
  56. data/lib/doc/classes/RGhost/Config.src/M000016.html +45 -0
  57. data/lib/doc/classes/RGhost/Document.html +704 -0
  58. data/lib/doc/classes/RGhost/Document.src/M000017.html +19 -0
  59. data/lib/doc/classes/RGhost/Document.src/M000018.html +18 -0
  60. data/lib/doc/classes/RGhost/Document.src/M000019.html +18 -0
  61. data/lib/doc/classes/RGhost/Document.src/M000020.html +18 -0
  62. data/lib/doc/classes/RGhost/Document.src/M000021.html +18 -0
  63. data/lib/doc/classes/RGhost/Document.src/M000022.html +18 -0
  64. data/lib/doc/classes/RGhost/Document.src/M000023.html +18 -0
  65. data/lib/doc/classes/RGhost/Document.src/M000024.html +18 -0
  66. data/lib/doc/classes/RGhost/Document.src/M000025.html +18 -0
  67. data/lib/doc/classes/RGhost/Document.src/M000026.html +18 -0
  68. data/lib/doc/classes/RGhost/Document.src/M000027.html +18 -0
  69. data/lib/doc/classes/RGhost/Document.src/M000028.html +18 -0
  70. data/lib/doc/classes/RGhost/Document.src/M000029.html +18 -0
  71. data/lib/doc/classes/RGhost/Document.src/M000030.html +18 -0
  72. data/lib/doc/classes/RGhost/Document.src/M000031.html +18 -0
  73. data/lib/doc/classes/RGhost/Document.src/M000032.html +18 -0
  74. data/lib/doc/classes/RGhost/Document.src/M000033.html +18 -0
  75. data/lib/doc/classes/RGhost/Document.src/M000034.html +18 -0
  76. data/lib/doc/classes/RGhost/Document.src/M000035.html +18 -0
  77. data/lib/doc/classes/RGhost/Document.src/M000036.html +18 -0
  78. data/lib/doc/classes/RGhost/Document.src/M000037.html +18 -0
  79. data/lib/doc/classes/RGhost/Document.src/M000038.html +18 -0
  80. data/lib/doc/classes/RGhost/Document.src/M000039.html +18 -0
  81. data/lib/doc/classes/RGhost/Document.src/M000040.html +18 -0
  82. data/lib/doc/classes/RGhost/Document.src/M000041.html +18 -0
  83. data/lib/doc/classes/RGhost/Document.src/M000042.html +18 -0
  84. data/lib/doc/classes/RGhost/Document.src/M000043.html +18 -0
  85. data/lib/doc/classes/RGhost/Document.src/M000044.html +18 -0
  86. data/lib/doc/classes/RGhost/Document.src/M000045.html +18 -0
  87. data/lib/doc/classes/RGhost/Document.src/M000046.html +18 -0
  88. data/lib/doc/classes/RGhost/Document.src/M000047.html +18 -0
  89. data/lib/doc/classes/RGhost/Document.src/M000048.html +18 -0
  90. data/lib/doc/created.rid +1 -0
  91. data/lib/doc/files/rghost_barcode/rghost_barcode_adapter_rb.html +101 -0
  92. data/lib/doc/files/rghost_barcode/rghost_barcode_base_rb.html +101 -0
  93. data/lib/doc/files/rghost_barcode/rghost_barcode_classes_rb.html +101 -0
  94. data/lib/doc/files/rghost_barcode/rghost_barcode_examples_rb.html +101 -0
  95. data/lib/doc/files/rghost_barcode/rghost_barcode_version_rb.html +101 -0
  96. data/lib/doc/files/rghost_barcode_rb.html +111 -0
  97. data/lib/doc/files/teste_main_rb.html +110 -0
  98. data/lib/doc/fr_class_index.html +67 -0
  99. data/lib/doc/fr_file_index.html +33 -0
  100. data/lib/doc/fr_method_index.html +74 -0
  101. data/lib/doc/index.html +24 -0
  102. data/lib/rghost_barcode.rb +7 -0
  103. data/lib/rghost_barcode/ps/auspost.ps +192 -0
  104. data/lib/rghost_barcode/ps/azteccode.ps +357 -0
  105. data/lib/rghost_barcode/ps/barcode_template.eps +1193 -0
  106. data/lib/rghost_barcode/ps/code11.ps +128 -0
  107. data/lib/rghost_barcode/ps/code128.ps +121 -0
  108. data/lib/rghost_barcode/ps/code2of5.ps +106 -0
  109. data/lib/rghost_barcode/ps/code39.ps +109 -0
  110. data/lib/rghost_barcode/ps/code93.ps +117 -0
  111. data/lib/rghost_barcode/ps/datamatrix.ps +328 -0
  112. data/lib/rghost_barcode/ps/ean13.ps +183 -0
  113. data/lib/rghost_barcode/ps/ean2.ps +101 -0
  114. data/lib/rghost_barcode/ps/ean5.ps +116 -0
  115. data/lib/rghost_barcode/ps/ean8.ps +101 -0
  116. data/lib/rghost_barcode/ps/interleaved2of5.ps +132 -0
  117. data/lib/rghost_barcode/ps/isbn.ps +118 -0
  118. data/lib/rghost_barcode/ps/kix.ps +98 -0
  119. data/lib/rghost_barcode/ps/maxicode.ps +307 -0
  120. data/lib/rghost_barcode/ps/msi.ps +104 -0
  121. data/lib/rghost_barcode/ps/onecode.ps +276 -0
  122. data/lib/rghost_barcode/ps/pdf417.ps +428 -0
  123. data/lib/rghost_barcode/ps/pharmacode.ps +69 -0
  124. data/lib/rghost_barcode/ps/plessey.ps +121 -0
  125. data/lib/rghost_barcode/ps/postnet.ps +114 -0
  126. data/lib/rghost_barcode/ps/qrcode.ps +530 -0
  127. data/lib/rghost_barcode/ps/rationalizedcodabar.ps +117 -0
  128. data/lib/rghost_barcode/ps/raw.ps +35 -0
  129. data/lib/rghost_barcode/ps/render.ps +307 -0
  130. data/lib/rghost_barcode/ps/render.ps~ +308 -0
  131. data/lib/rghost_barcode/ps/royalmail.ps +119 -0
  132. data/lib/rghost_barcode/ps/rss14.ps +237 -0
  133. data/lib/rghost_barcode/ps/rssexpanded.ps +211 -0
  134. data/lib/rghost_barcode/ps/rsslimited.ps +191 -0
  135. data/lib/rghost_barcode/ps/symbol.ps +49 -0
  136. data/lib/rghost_barcode/ps/upca.ps +128 -0
  137. data/lib/rghost_barcode/ps/upce.ps +157 -0
  138. data/lib/rghost_barcode/rghost_barcode_adapter.rb +249 -0
  139. data/lib/rghost_barcode/rghost_barcode_base.rb +210 -0
  140. data/lib/rghost_barcode/rghost_barcode_classes.rb +96 -0
  141. data/lib/rghost_barcode/rghost_barcode_examples.rb +35 -0
  142. data/lib/rghost_barcode/rghost_barcode_version.rb +8 -0
  143. data/lib/teste_main.rb +94 -0
  144. metadata +218 -0
@@ -0,0 +1,101 @@
1
+
2
+ % --DESC: EAN-2 (2 digit addon)
3
+ % --EXAM: 05
4
+ % --EXOP: includetext guardwhitespace
5
+ % --RNDR: renlinear
6
+ /ean2 {
7
+
8
+ 0 begin
9
+
10
+ /options exch def % We are given an options string
11
+ /useropts options def
12
+ /barcode exch def % We are given a barcode string
13
+
14
+ /includetext false def % Enable/disable text
15
+ /textfont /Helvetica def
16
+ /textsize 12 def
17
+ /textyoffset (unset) def
18
+ /height 0.7 def
19
+
20
+ % Parse the input options
21
+ options {
22
+ token false eq {exit} if dup length string cvs (=) search
23
+ true eq {cvlit exch pop exch def} {cvlit true def} ifelse
24
+ } loop
25
+
26
+ /textfont textfont cvlit def
27
+ /textsize textsize cvr def
28
+ /height height cvr def
29
+ textyoffset (unset) eq {
30
+ /textyoffset height 72 mul 1 add def
31
+ } {
32
+ /textyoffset textyoffset cvr def
33
+ } ifelse
34
+
35
+ /barlen barcode length def % Length of the code
36
+
37
+ % Create an array containing the character mappings
38
+ /encs
39
+ [ (3211) (2221) (2122) (1411) (1132)
40
+ (1231) (1114) (1312) (1213) (3112)
41
+ (112) (11)
42
+ ] def
43
+
44
+ % Create a string of the available characters
45
+ /barchars (0123456789) def
46
+
47
+ % Determine the mirror map based on mod 4 checksum
48
+ /mirrormap [(00) (01) (10) (11)] barcode 0 2 getinterval cvi 4 mod get def
49
+
50
+ /sbs 13 string def
51
+ /txt 2 array def
52
+
53
+ 0 1 1 {
54
+ /i exch def
55
+
56
+ % Prefix with either a start character or separator character
57
+ i 0 eq {
58
+ sbs 0 encs 10 get putinterval
59
+ } {
60
+ sbs i 1 sub 6 mul 7 add encs 11 get putinterval
61
+ } ifelse
62
+
63
+ % Lookup the encoding for the barcode character
64
+ barcode i 1 getinterval barchars exch search
65
+ pop % Discard true leaving pre
66
+ length /indx exch def % indx is the length of pre
67
+ pop pop % Discard seek and post
68
+ /enc encs indx get def % Get the indxth encoding
69
+ mirrormap i get 49 eq { % Reverse enc if 1 in this position in mirrormap
70
+ /enclen enc length def
71
+ /revenc enclen string def
72
+ 0 1 enclen 1 sub {
73
+ /j exch def
74
+ /char enc j get def
75
+ revenc enclen j sub 1 sub char put
76
+ } for
77
+ /enc revenc def
78
+ } if
79
+ sbs i 6 mul 3 add enc putinterval % Put encoded digit into sbs
80
+ txt i [barcode i 1 getinterval i 1 sub 9 mul 13 add textyoffset textfont textsize] put
81
+ } for
82
+
83
+ % Return the arguments
84
+ /retval 8 dict def
85
+ retval (ren) (renlinear) put
86
+ retval (sbs) [sbs {48 sub} forall] put
87
+ retval (bhs) [12{height}repeat] put
88
+ retval (bbs) [12{0}repeat] put
89
+ includetext {
90
+ retval (txt) txt put
91
+ } if
92
+ retval (opt) useropts put
93
+ retval (guardrightpos) 10 put
94
+ retval (guardrightypos) textyoffset 4 add put
95
+ retval (bordertop) 10 put
96
+ retval
97
+
98
+ end
99
+
100
+ } bind def
101
+ /ean2 load 0 1 dict put
@@ -0,0 +1,116 @@
1
+
2
+ % --DESC: EAN-5 (5 digit addon)
3
+ % --EXAM: 90200
4
+ % --EXOP: includetext guardwhitespace
5
+ % --RNDR: renlinear
6
+ /ean5 {
7
+
8
+ 0 begin
9
+
10
+ /options exch def % We are given an option string
11
+ /useropts options def
12
+ /barcode exch def % We are given a barcode string
13
+
14
+ /includetext false def % Enable/disable text
15
+ /textfont /Helvetica def
16
+ /textsize 12 def
17
+ /textyoffset (unset) def
18
+ /height 0.7 def
19
+
20
+ % Parse the input options
21
+ options {
22
+ token false eq {exit} if dup length string cvs (=) search
23
+ true eq {cvlit exch pop exch def} {cvlit true def} ifelse
24
+ } loop
25
+
26
+ /textfont textfont cvlit def
27
+ /textsize textsize cvr def
28
+ /height height cvr def
29
+ textyoffset (unset) eq {
30
+ /textyoffset height 72 mul 1 add def
31
+ } {
32
+ /textyoffset textyoffset cvr def
33
+ } ifelse
34
+
35
+ /barlen barcode length def % Length of the code
36
+
37
+ % Create an array containing the character mappings
38
+ /encs
39
+ [ (3211) (2221) (2122) (1411) (1132)
40
+ (1231) (1114) (1312) (1213) (3112)
41
+ (112) (11)
42
+ ] def
43
+
44
+ % Create a string of the available characters
45
+ /barchars (0123456789) def
46
+
47
+ % Determine the mirror map based on mod 10 checksum
48
+ /mirrormaps
49
+ [ (11000) (10100) (10010) (10001) (01100)
50
+ (00110) (00011) (01010) (01001) (00101)
51
+ ] def
52
+ /checksum 0 def
53
+ 0 1 4 {
54
+ /i exch def
55
+ /barchar barcode i get 48 sub def
56
+ i 2 mod 0 eq {
57
+ /checksum barchar 3 mul checksum add def
58
+ } {
59
+ /checksum barchar 9 mul checksum add def
60
+ } ifelse
61
+ } for
62
+ /checksum checksum 10 mod def
63
+ /mirrormap mirrormaps checksum get def
64
+
65
+ /sbs 31 string def
66
+ /txt 5 array def
67
+
68
+ 0 1 4 {
69
+ /i exch def
70
+
71
+ % Prefix with either a start character or separator character
72
+ i 0 eq {
73
+ sbs 0 encs 10 get putinterval
74
+ } {
75
+ sbs i 1 sub 6 mul 7 add encs 11 get putinterval
76
+ } ifelse
77
+
78
+ % Lookup the encoding for the barcode character
79
+ barcode i 1 getinterval barchars exch search
80
+ pop % Discard true leaving pre
81
+ length /indx exch def % indx is the length of pre
82
+ pop pop % Discard seek and post
83
+ /enc encs indx get def % Get the indxth encoding
84
+ mirrormap i get 49 eq { % Reverse enc if 1 in this position in mirrormap
85
+ /enclen enc length def
86
+ /revenc enclen string def
87
+ 0 1 enclen 1 sub {
88
+ /j exch def
89
+ /char enc j get def
90
+ revenc enclen j sub 1 sub char put
91
+ } for
92
+ /enc revenc def
93
+ } if
94
+ sbs i 6 mul 3 add enc putinterval % Put encoded digit into sbs
95
+ txt i [barcode i 1 getinterval i 1 sub 9 mul 13 add textyoffset textfont textsize] put
96
+ } for
97
+
98
+ % Return the arguments
99
+ /retval 8 dict def
100
+ retval (ren) (renlinear) put
101
+ retval (sbs) [sbs {48 sub} forall] put
102
+ retval (bhs) [16{height}repeat] put
103
+ retval (bbs) [16{0}repeat] put
104
+ includetext {
105
+ retval (txt) txt put
106
+ } if
107
+ retval (opt) useropts put
108
+ retval (guardrightpos) 10 put
109
+ retval (guardrightypos) textyoffset 4 add put
110
+ retval (bordertop) 10 put
111
+ retval
112
+
113
+ end
114
+
115
+ } bind def
116
+ /ean5 load 0 1 dict put
@@ -0,0 +1,101 @@
1
+
2
+ % --DESC: EAN-8
3
+ % --EXAM: 01335583
4
+ % --EXOP: includetext guardwhitespace height=0.5
5
+ % --RNDR: renlinear
6
+ /ean8 {
7
+
8
+ 0 begin
9
+
10
+ /options exch def % We are given an option string
11
+ /useropts options def
12
+ /barcode exch def % We are given a barcode string
13
+
14
+ /includetext false def % Enable/disable text
15
+ /textfont /Helvetica def
16
+ /textsize 12 def
17
+ /textyoffset -4 def
18
+ /height 1 def
19
+
20
+ % Parse the input options
21
+ options {
22
+ token false eq {exit} if dup length string cvs (=) search
23
+ true eq {cvlit exch pop exch def} {cvlit true def} ifelse
24
+ } loop
25
+
26
+ /textfont textfont cvlit def
27
+ /textsize textsize cvr def
28
+ /textyoffset textyoffset cvr def
29
+ /height height cvr def
30
+
31
+ % Create an array containing the character mappings
32
+ /encs
33
+ [ (3211) (2221) (2122) (1411) (1132)
34
+ (1231) (1114) (1312) (1213) (3112)
35
+ (111) (11111) (111)
36
+ ] def
37
+
38
+ % Create a string of the available characters
39
+ /barchars (0123456789) def
40
+
41
+ /barlen barcode length def % Length of the code
42
+ /sbs barlen 4 mul 11 add string def
43
+ /txt barlen array def
44
+
45
+ % Put the start character
46
+ sbs 0 encs 10 get putinterval
47
+
48
+ % Left side
49
+ 0 1 3 {
50
+ % Lookup the encoding for the each barcode character
51
+ /i exch def
52
+ barcode i 1 getinterval barchars exch search
53
+ pop % Discard true leaving pre
54
+ length /indx exch def % indx is the length of pre
55
+ pop pop % Discard seek and post
56
+ /enc encs indx get def % Get the indxth encoding
57
+ sbs i 4 mul 3 add enc putinterval % Put encoded digit into sbs
58
+ txt i [barcode i 1 getinterval i 7 mul 4 add textyoffset textfont textsize] put
59
+ } for
60
+
61
+ % Put the middle character
62
+ sbs 4 4 mul 3 add encs 11 get putinterval
63
+
64
+ % Right side
65
+ 4 1 7 {
66
+ % Lookup the encoding for the each barcode character
67
+ /i exch def
68
+ barcode i 1 getinterval barchars exch search
69
+ pop % Discard true leaving pre
70
+ length /indx exch def % indx is the length of pre
71
+ pop pop % Discard seek and post
72
+ /enc encs indx get def % Get the indxth encoding
73
+ sbs i 4 mul 8 add enc putinterval % Put encoded digit into sbs
74
+ txt i [barcode i 1 getinterval i 7 mul 8 add textyoffset textfont textsize] put
75
+ } for
76
+
77
+ % Put the end character
78
+ sbs barlen 4 mul 8 add encs 12 get putinterval
79
+
80
+ % Return the arguments
81
+ /retval 8 dict def
82
+ retval (ren) (renlinear) put
83
+ retval (sbs) [sbs {48 sub} forall] put
84
+ includetext {
85
+ retval (bhs) [height height 8{height .075 sub}repeat height height 8{height .075 sub}repeat height height] put
86
+ retval (bbs) [0 0 8{.075}repeat 0 0 8{.075}repeat 0 0] put
87
+ retval (txt) txt put
88
+ } {
89
+ retval (bhs) [22{height}repeat] put
90
+ retval (bbs) [22{0}repeat] put
91
+ } ifelse
92
+ retval (opt) useropts put
93
+ retval (guardleftpos) 10 put
94
+ retval (guardrightpos) 10 put
95
+ retval (borderbottom) 5 put
96
+ retval
97
+
98
+ end
99
+
100
+ } bind def
101
+ /ean8 load 0 1 dict put
@@ -0,0 +1,132 @@
1
+
2
+ % --DESC: Interleaved 2 of 5 (ITF)
3
+ % --EXAM: 24012345678905
4
+ % --EXOP: showborder borderwidth=4 borderleft=15 borderright=15 height=0.5 includecheck includetext includecheckintext textyoffset=-10
5
+ % --RNDR: renlinear
6
+ /interleaved2of5 {
7
+
8
+ 0 begin % Confine variables to local scope
9
+
10
+ /options exch def % We are given an option string
11
+ /useropts options def
12
+ /barcode exch def % We are given a barcode string
13
+
14
+ /includecheck false def % Enable/disable checkdigit
15
+ /includetext false def % Enable/disable text
16
+ /includecheckintext false def
17
+ /textfont /Courier def
18
+ /textsize 10 def
19
+ /textyoffset -7 def
20
+ /height 1 def
21
+
22
+ % Parse the input options
23
+ options {
24
+ token false eq {exit} if dup length string cvs (=) search
25
+ true eq {cvlit exch pop exch def} {cvlit true def} ifelse
26
+ } loop
27
+
28
+ /textfont textfont cvlit def
29
+ /textsize textsize cvr def
30
+ /textyoffset textyoffset cvr def
31
+ /height height cvr def
32
+
33
+ /barlen barcode length def % Length of the code
34
+
35
+ % Prefix 0 to barcode if length is even and including checkdigit
36
+ % or length is odd and not including checkdigit
37
+ barlen 2 mod 0 eq includecheck and % even & includecheck
38
+ barlen 2 mod 0 ne includecheck not and or { % odd & !includecheck
39
+ /pad barlen 1 add string def % Create pad one bigger than barcode
40
+ pad 0 48 put % Put ascii 0 at start of pad
41
+ pad 1 barcode putinterval % Add barcode to the end of pad
42
+ /barcode pad def % barcode=pad
43
+ /barlen barlen 1 add def % barlen++
44
+ } if
45
+
46
+ % Add checksum to end of barcode
47
+ includecheck {
48
+ /checksum 0 def
49
+ 0 1 barlen 1 sub {
50
+ /i exch def
51
+ i 2 mod 0 eq {
52
+ /checksum checksum barcode i get 48 sub 3 mul add def
53
+ } {
54
+ /checksum checksum barcode i get 48 sub add def
55
+ } ifelse
56
+ } for
57
+ /checksum 10 checksum 10 mod sub 10 mod def
58
+ /pad barlen 1 add string def % Create pad one bigger than barcode
59
+ pad 0 barcode putinterval % Add barcode to the start of pad
60
+ pad barlen checksum 48 add put % Add checksum to end of pad
61
+ /barcode pad def % barcode=pad
62
+ /barlen barlen 1 add def % barlen++
63
+ } if
64
+
65
+ % Create an array containing the character mappings
66
+ /encs
67
+ [ (11331) (31113) (13113) (33111) (11313)
68
+ (31311) (13311) (11133) (31131) (13131)
69
+ (1111) (3111)
70
+ ] def
71
+
72
+ % Create a string of the available characters
73
+ /barchars (0123456789) def
74
+ /sbs barlen 5 mul 8 add string def
75
+ /txt barlen array def
76
+
77
+ % Put the start character
78
+ sbs 0 encs 10 get putinterval
79
+
80
+ 0 2 barlen 1 sub {
81
+ /i exch def
82
+ % Lookup the encodings for two consecutive barcode characters
83
+ barcode i 1 getinterval barchars exch search
84
+ pop % Discard true leaving pre
85
+ length /indx exch def % indx is the length of pre
86
+ pop pop % Discard seek and post
87
+ /enca encs indx get def % Get the indxth encoding
88
+
89
+ barcode i 1 add 1 getinterval barchars exch search
90
+ pop % Discard true leaving pre
91
+ length /indx exch def % indx is the length of pre
92
+ pop pop % Discard seek and post
93
+ /encb encs indx get def % Get the indxth encoding
94
+
95
+ % Interleave the two character encodings
96
+ /intl enca length 2 mul string def
97
+ 0 1 enca length 1 sub {
98
+ /j exch def
99
+ /achar enca j get def
100
+ /bchar encb j get def
101
+ intl j 2 mul achar put
102
+ intl j 2 mul 1 add bchar put
103
+ } for
104
+
105
+ sbs i 5 mul 4 add intl putinterval % Put encoded digit into sbs
106
+ txt i [barcode i 1 getinterval i 9 mul 4 add textyoffset textfont textsize] put
107
+ includecheck includecheckintext not and barlen 2 sub i eq and {
108
+ txt i 1 add [( ) i 1 add 9 mul 4 add textyoffset textfont textsize] put
109
+ } {
110
+ txt i 1 add [barcode i 1 add 1 getinterval i 1 add 9 mul 4 add textyoffset textfont textsize] put
111
+ } ifelse
112
+ } for
113
+
114
+ % Put the end character
115
+ sbs barlen 5 mul 4 add encs 11 get putinterval
116
+
117
+ % Return the arguments
118
+ /retval 8 dict def
119
+ retval (ren) (renlinear) put
120
+ retval (sbs) [sbs {48 sub} forall] put
121
+ retval (bhs) [sbs length 1 add 2 idiv {height} repeat] put
122
+ retval (bbs) [sbs length 1 add 2 idiv {0} repeat] put
123
+ includetext {
124
+ retval (txt) txt put
125
+ } if
126
+ retval (opt) useropts put
127
+ retval
128
+
129
+ end
130
+
131
+ } bind def
132
+ /interleaved2of5 load 0 1 dict put