barcodes.py: Accept data on stdin instead of just generating sequence numbers

This commit is contained in:
Petr Baudis 2012-07-18 00:02:42 +02:00
parent 1b47deb8f4
commit 1d59480cf0

View file

@ -1,5 +1,10 @@
#!/usr/bin/python #!/usr/bin/python
# #
# accept strings on stdin and put them to a SVG in grid layout
# compatible with our sticker papers
#
# example: seq -f %06g 0 1000 | ./barcodes.py
#
# requires zint binary from zint package # requires zint binary from zint package
# #
@ -14,10 +19,6 @@ svgfoot = """
</svg> </svg>
""" """
if len(sys.argv) > 1:
start = int(sys.argv[1])
else:
start = 0
cntx = 7 cntx = 7
cnty = 10 cnty = 10
scalex = 1 scalex = 1
@ -26,13 +27,17 @@ scaley = 0.8
f = open('barcodes.svg','w') f = open('barcodes.svg','w')
f.write(svghead) f.write(svghead)
for i in range(cntx): try:
for j in range(cnty): for i in range(cntx):
elem = Popen(('zint','--directsvg','-d','%06d' % (start+i*cnty+j) ), stdout = PIPE).communicate()[0].split('\n') for j in range(cnty):
elem = elem[8:-2] data = raw_input()
elem[0] = elem[0].replace('id="barcode"', 'transform="matrix(%f,0,0,%f,%f,%f)"' % (scalex, scaley, 42+i*150 , 14+j*74.3) ) elem = Popen(('zint','--directsvg','-d', data), stdout = PIPE).communicate()[0].split('\n')
elem[23] = 'brm - ' + elem[23].strip() + ' - lab' elem = elem[8:-2]
f.write('\n'.join(elem)) elem[0] = elem[0].replace('id="barcode"', 'transform="matrix(%f,0,0,%f,%f,%f)"' % (scalex, scaley, 42+i*150 , 14+j*74.3) )
elem[23] = 'brm - ' + elem[23].strip() + ' - lab'
f.write('\n'.join(elem))
except EOFError:
pass
f.write(svgfoot) f.write(svgfoot)
f.close() f.close()