#!/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 # # options: # -b: label has format "brm - NUMER - lab" (for inventory stickers) # # requires zint binary from zint package # from subprocess import Popen, PIPE import argparse import sys parser = argparse.ArgumentParser() parser.add_argument('-b', '--brmlabel', action='store_true') args = parser.parse_args() svghead = """ """ svgfoot = """ """ cntx = 7 cnty = 10 scalex = 1 scaley = 0.8 f = open('barcodes.svg','w') f.write(svghead) try: for i in range(cntx): for j in range(cnty): data = raw_input() elem = Popen(('zint','--directsvg','-d', data), stdout = PIPE).communicate()[0].split('\n') elem = elem[8:-2] elem[0] = elem[0].replace('id="barcode"', 'transform="matrix(%f,0,0,%f,%f,%f)"' % (scalex, scaley, 42+i*150 , 14+j*74.3) ) if args.brmlabel: elem[23] = 'brm - ' + elem[23].strip() + ' - lab' f.write('\n'.join(elem)) except EOFError: pass f.write(svgfoot) f.close()