I25 barcode generator?
Carsten Haese
carsten at uniqsys.com
Thu Apr 26 22:43:25 EDT 2007
On Thu, 26 Apr 2007 22:12:54 -0400, I wrote
> On Thu, 26 Apr 2007 18:39:23 -0300, Gerardo Herzig wrote
> > Hi. Im looking for an I25 barcode generator.[...]
>
> [...]it shouldn't be too hard to make one.
>
And it wasn't:
def i25(x):
"""i25(x) -> string
Encode string of digits into I25 barcode.
The input string must consist of an even number of digits.
The output string represents the I25 barcode of the input string
with N = narrow bar, W = wide bar, n = narrow space, w = wide space.
"""
alphabet = (
"NNWWN", "WNNNW", "NWNNW", "WWNNN", "NNWNW",
"WNWNN", "NWWNN", "NNNWW", "WNNWN", "NWNWN"
)
if not x.isdigit():
raise ValueError, "Input string must consist of digits."
if len(x)%2!=0:
raise ValueError, "Input string must be of even length."
bars = "".join(alphabet[int(c)] for c in x[0::2])
spaces = "".join(alphabet[int(c)] for c in x[1::2]).lower()
interleaved = "".join(t[0]+t[1] for t in zip(bars,spaces))
return "NnNn"+interleaved+"WnN"
Rendering the resulting string into the desired graphical format is left as an
exercise for the reader.
HTH,
Carsten.
More information about the Python-list
mailing list