def _createBarcode(self): if self.barcode["value"] == "": return if self.barcode["type"] == BARCODE_ANY: logger.warning("Usando %s por defecto" % self.typeToName(BARCODE_128)) self.barcode["type"] = BARCODE_128 type_ = self.typeToName(self.barcode["type"]) value_ = self.barcode["value"] bg_ = self.barcode["bg"] fg_ = self.barcode["fg"] if not isinstance(self.barcode["bg"], str): bg_ = QColor(self.barcode["bg"]).name() if not isinstance(self.barcode["fg"], str): fg_ = QColor(self.barcode["fg"]).name() margin_ = self.barcode["margin"] / 10 bar_ = None render_options = { 'module_width': 0.2, 'module_height': 5, # 15 'text_distance': 1.0, # 5.0 'background': bg_.lower(), 'foreground': fg_.lower(), 'write_text': self.barcode["text"], 'font_size': 10, 'text': value_, 'quiet_zone': margin_, # 6.5 } try: import barcode from barcode.writer import ImageWriter from PIL.ImageQt import ImageQt barC = barcode.get_barcode_class(type_.lower()) bar_ = barC(u'%s' % value_, writer=ImageWriter()) b = bar_.render(render_options) qim = ImageQt(b) self.p = QPixmap.fromImage(qim) except Exception: print(traceback.format_exc()) self.barcode["valid"] = False self.p = None if self.p: # Escalar if self.barcode["scale"] != 1.0: wS_ = self.barcode["x"] * self.barcode["scale"] hS_ = self.barcode["y"] * self.barcode["scale"] self.p = self.p.scaled(wS_, hS_) self.barcode["x"] = self.p.width() self.barcode["y"] = self.p.height() # FALTA: res , cut y rotation self.barcode["valid"] = True else: self.barcode["valid"] = False
def gen_single(code='test'): # return image path: file:///path/to/image C128 = barcode.get_barcode_class('code128') ins_c128 = C128(code, writer=ImageWriter()) path = os.path.join(ABS_DIR_TO_STORE_IMAGES, code + rand_prefix()) # print(path) ins_c128.save(path) return pathlib.Path(path).as_uri() + '.png'
def get_br(bno): import barcode #msgprint("bno "+cstr(bno)) from barcode.writer import ImageWriter EAN = barcode.get_barcode_class('code39') ean = EAN(bno, writer=ImageWriter()) fullname = ean.save(bno) #msgprint("from utils "+cstr(fullname)) return fullname
def creaCodigoAux(): EAN = barcode.get_barcode_class('ean13') #En esta linea creo un ID0 basado en el tiempo de Unix a prueba de Hash Collision stamp = str((int(time.time())*100)+(datetime.datetime.now().second+10)) ean = EAN(stamp) ean.save("sif/media/codes/"+stamp) crea = CodigoBarras(codigo=stamp) crea.save() cofre = CodigoBarras.objects.get(id=crea.id) return cofre
def generate_code(value): ''' Add extra char ''' import barcode EAN = barcode.get_barcode_class('ean13') if len(value) != 12: raise osv.except_osv( _('Error'), _('EAN before control must be 12 char!')) ean13 = EAN(value) return ean13.get_fullcode()
def sgv_ean_barcode(request, ean=None): if validate_ean13(ean): return redirect('/static/img/ean_error.svg') else: import barcode response = HttpResponse(content_type='image/svg+xml') options = {'module_height': 5, 'write_text': False} svg = barcode.get_barcode_class('ean13')(ean) response.write(svg.render(options)) return response
def generate_barcode(code, docname): path = os.path.abspath(os.path.join('.','bench_smart', 'public', 'files')) directory = '%s/%s'%(path, docname) if not os.path.exists(directory): os.makedirs(directory) if directory: filpath = directory + '/' + code barcode.PROVIDED_BARCODES EAN = barcode.get_barcode_class('Code39') ean = EAN(code) fullname = ean.save(filpath) return fullname or None
def generate_barcode(self): "generates barcode png and returns filename" try: import barcode except ImportError: #not installed return None if not self.upc: return None EAN = barcode.get_barcode_class('ean13') upc_filename = EAN(self.upc, writer=barcode.writer.ImageWriter()).save('%s.png' % self.upc) return upc_filename
def _write_product_table_row(self, work_book, work_sheet, product, line): barcode_code = product.barcode EAN = barcode.get_barcode_class('ean13') ean = EAN(barcode_code, writer=ImageWriter()) file_name = ean.save(product.name) size = openpyxl.drawing.Image(file_name).image.size * array([0.5, 0.5]) img = openpyxl.drawing.Image(file_name, size=size) line_number = 'A%s' %line img.anchor(work_book.worksheets[0].cell(line_number)) work_sheet.append(( product.name, product.order, product.quantity, )) work_sheet.append((work_sheet.add_image(img),)),
def gen_barcode(code): from StringIO import StringIO import barcode try: code_class = barcode.get_barcode_class('code39') image_writer=barcode.writer.ImageWriter() code_generater = code_class(code, writer=image_writer, add_checksum=False) io = StringIO() options = {'text_distance': 2} code_generater.write(io, options) #response = make_response(io.read()) #response.headers['content-Type'] = 'image/png' #return response print io.len return io.read() except Exception, e: print e
def generate_barcode(self, barcode_string, height, width): temp_path_svg = tempfile.gettempdir()+"/temp_barcode" temp_path_png = tempfile.gettempdir()+"/temp_barcode.png" code39 = barcode.get_barcode_class('code39') c39 = code39(str(barcode_string)) fullname = c39.save(temp_path_svg) file = open(temp_path_svg+".svg") img = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200,75) ctx = cairo.Context(img) svg_data = file.read() handler = rsvg.Handle(None, str(svg_data)) handler.render_cairo(ctx) img.write_to_png(temp_path_png) name = open(temp_path_png, "r+") barcode_data = base64.b64encode(name.read()) return barcode_data
def _barcode(this, val, height=None, type="code128", add_checksum=False): if not barcode: return "" if not val: return "" try: bar_cls = barcode.get_barcode_class(type) writer = NFBarWriter() writer.custom_module_height = height if type == "code39": bar = bar_cls(str(val), writer=writer, add_checksum=add_checksum) else: bar = bar_cls(str(val), writer=writer) _, fname = tempfile.mkstemp(suffix=".png", prefix="barcode-") fullname = bar.save(fname.replace(".png", "")) return fullname except Exception as e: print("WARNING: failed to generate barcode: %s (%s)" % (val, e)) return ""
def test(): if not os.path.isdir(TESTPATH): try: os.mkdir(TESTPATH) except OSError as e: print('Test not run.') print('Error:', e) sys.exit(1) objects = [] def append(x, y): objects.append(OBJECTS.format(filename=x, name=y)) def append_img(x, y): objects.append(IMAGES.format(filename=x, name=y)) options = dict(module_width=0.495, module_height=25.0) for codename, code in TESTCODES: bcode = get_barcode(codename, code) if codename.startswith('i'): options['center_text'] = False else: options['center_text'] = True filename = bcode.save(os.path.join(TESTPATH, codename), options) print('Code: {0}, Input: {1}, Output: {2}'.format( bcode.name, code, bcode.get_fullcode())) append(filename, bcode.name) if ImageWriter is not None: bcodec = get_barcode_class(codename) bcode = bcodec(code, writer=ImageWriter()) opts = dict(font_size=14, text_distance=1) if codename.startswith('i'): opts['center_text'] = False else: options['center_text'] = True filename = bcode.save(os.path.join(TESTPATH, codename), opts) append_img(filename, bcode.name) else: objects.append(NO_PIL) # Save htmlfile with all objects with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f: obj = '\n'.join(objects) f.write(HTML.format(version=__version__, body=obj))
def creaCodigo(request): informacion = "Inicia" if request.method == "POST": informacion = "pasa post" formulario = FormuCrea(request.POST) if formulario.is_valid(): EAN = barcode.get_barcode_class('ean13') ean = EAN(request.POST.get('codigo')) ean.save(request.POST.get('codigo')) agrega = formulario.save(commit = False) agrega.save() informacion = "Terminado" return HttpResponseRedirect('/codigoBarras/%s' %agrega.id) else: tablaCofre = CodigoBarras.objects().all() formulario = FormuCrea() ctx = {'form': formulario,'info':informacion,'tabla':tablaCofre} return render_to_response('inventario/agregaCB.html',ctx,context_instance = RequestContext(request))
def generate_barcode(code, docname): site_name = get_site_name() path = os.path.abspath(os.path.join('.',site_name, 'public', 'files','Barcode')) directory = '/%s/%s/'%(path,docname) if not os.path.exists(directory): os.makedirs(directory) if directory: code1=code.replace("/","-") filpath = directory + code1 barcode.PROVIDED_BARCODES EAN = barcode.get_barcode_class('Code39') ean = EAN(code) ean.writer.set_options({"module_height":6.0}) fullname = ean.save(filpath) return code1 or None
def creaCodigo(request): informacion = "Inicia" if request.method == "POST": informacion = "pasa post" EAN = barcode.get_barcode_class('ean13') #En esta linea creo un ID0 basado en el tiempo de Unix a prueba de Hash Collision stamp = str((int(time.time())*100)+(datetime.datetime.now().second+10)) ean = EAN(stamp) ean.save("sif/media/codes/"+stamp) crea = CodigoBarras(codigo=stamp) crea.save() informacion = "Terminado" return HttpResponseRedirect('/codigoBarras/%s' %crea.id) else: formulario = "<input type='submit' name='envia' value='envia'>" ctx = {'form': formulario,'info':informacion} return render_to_response('inventario/agregaCB.html',ctx,context_instance = RequestContext(request))
def test(): if not os.path.isdir(TESTPATH): try: os.mkdir(TESTPATH) except OSError as e: print('Test not run.') print('Error:', e) sys.exit(1) objects = [] append = lambda x, y: objects.append(OBJECTS.format(filename=x, name=y)) append_img = lambda x, y: objects.append(IMAGES.format(filename=x, name=y)) options = dict(module_width=0.495, module_height=25.0) for codename, code in TESTCODES: bcode = get_barcode(codename, code) if codename.startswith('i'): options['center_text'] = False else: options['center_text'] = True filename = bcode.save(os.path.join(TESTPATH, codename), options) print('Code: {0}, Input: {1}, Output: {2}'.format( bcode.name, code, bcode.get_fullcode())) append(filename, bcode.name) if ImageWriter is not None: bcodec = get_barcode_class(codename) bcode = bcodec(code, writer=ImageWriter()) opts = dict(font_size=14, text_distance=1) if codename.startswith('i'): opts['center_text'] = False else: options['center_text'] = True filename = bcode.save(os.path.join(TESTPATH, codename), opts) append_img(filename, bcode.name) else: objects.append(NO_PIL) # Save htmlfile with all objects with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f: obj = '\n'.join(objects) f.write(HTML.format(version=__version__, body=obj))
def barcode_func(): barcode_classes = { '1': 'ean8', '2': 'ean13', '3': 'ean14', '4': 'upca', '5': 'jan', '6': 'isbn10', '7': 'isbn13', '8': 'issn', '9': 'code39', 'x': 'code128', '*': 'pzn', } output = '' barcode_class = input('Select a Barcode Class: ') for option in barcode_class: output += barcode_classes.get(option) + '' br = barcode.get_barcode_class(output) barcode_data = input('Put your Barcode Number: ') barcode_ean8 = br(barcode_data) barcode_save_name = input('Put your filename: ') barcode_ean8.save(barcode_save_name)
def voucher_gen(self, request): MAX_X = 210 MAX_Y = 297 f = FPDF('P', 'mm', 'A4') f.add_page() pth = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'voucher_template.png') f.image(pth, 0, 0, MAX_X, MAX_Y) f.set_font('Arial', '', 20) f.text(70, 165, request.args['name'][0]) f.text(70, 201, request.args['reason'][0]) f.text(70, 236, request.args['extra'][0]) f.set_font('Arial', '', 14) rand = os.urandom(8).encode('hex') EAN = barcode.get_barcode_class('code128') r = con.execute(vouchers.insert().values( fullname=request.args['name'][0].decode('utf8'), reason=request.args['reason'][0].decode('utf8'), extra=request.args['extra'][0].decode('utf8'), unique_id=rand, used=False, timestamp=int(time.time()))) no = str(r.lastrowid) ean = EAN(str(rand)) fullname = ean.save('/tmp/ean13_barcode') svg2png(url=fullname, write_to="/tmp/out.png", dpi=300) f.image("/tmp/out.png", 10, 10, 100, 20) f.text(165, 257, no) request.setHeader('Content-Type', "application/pdf") return f.output(dest='S')
def soft_barcode(self, barcode_type, data, impl='bitImageColumn', module_height=5, module_width=0.2, text_distance=1): image_writer = ImageWriter() # Check if barcode type exists if barcode_type not in barcode.PROVIDED_BARCODES: raise BarcodeTypeError( 'Barcode type {} not supported by software barcode renderer' .format(barcode_type)) # Render the barcode to a fake file barcode_class = barcode.get_barcode_class(barcode_type) my_code = barcode_class(data, writer=image_writer) my_code.write("/dev/null", { 'module_height': module_height, 'module_width': module_width, 'text_distance': text_distance }) # Retrieve the Pillow image and print it image = my_code.writer._image self.image(image, impl=impl)
def report_barcode( self, type, # pylint: disable=redefined-builtin value, width=600, height=100, humanreadable=0, quiet=1, ): if type == "gs1_128": Gs1_128 = barcode.get_barcode_class("gs1_128") gs1_182 = Gs1_128(str(value), writer=SVGWitoutTextWriter()) image = gs1_182.render() return request.make_response(image, headers=[("Content-Type", "image/svg+xml")]) return super().report_barcode( type, value, width=width, height=height, humanreadable=humanreadable, quiet=quiet, )
def generate_barcode(event): global tmp_path delete_temp_image() barcode_txt = ent_barcode_txt.get() code_type = ent_code_type.get() if len(barcode_txt) is 0: notify('Nothing to do') return print(f'Code type: {code_type}') print(f'Text to generate: {barcode_txt}') b_class = barcode.get_barcode_class(code_type) iw = ImageWriter() iw.set_options({'dpi': 140}) try: bar = b_class(str(barcode_txt), writer=iw) notify('Format success') except (barcode.errors.WrongCountryCodeError, barcode.errors.BarcodeError, barcode.errors.BarcodeNotFoundError, barcode.errors.IllegalCharacterError, barcode.errors.NumberOfDigitsError, ValueError) as e: return notify(str(e)) path = os.path.join(tempfile.gettempdir(), barcode_txt) tmp_path = bar.save(path, text=barcode_txt) print(f'temporary image: {tmp_path}')
def create_barcode(code,product_name,price): EAN = barcode.get_barcode_class('code128') code_name = code ean = EAN(code_name, writer=ImageWriter()) barcode_image_name = ean.save('{}_{}'.format(code_name,product_name)) cwd = os.getcwd() image = Image.open(barcode_image_name) image_main = Image.open('final_img_barcode.jpg') main_image_sizex,main_image_sizey = image_main.size resized_img = image.resize((main_image_sizex-1500,main_image_sizey-1200)) image_main.paste(resized_img,(700,500)) image_main.save("{}/barcodes/{}".format(cwd,barcode_image_name)) image_after = Image.open("{}/barcodes/{}".format(cwd,barcode_image_name)) draw = ImageDraw.Draw(image_after) font = ImageFont.truetype('roboto-bold.ttf', size=100) (x, y) = (main_image_sizex-2300,main_image_sizey-1100) # (1300, 2000) message = "RS : {}".format(price) color = 'rgb(0, 0, 0)' draw.text((x, y), message, fill=color,font=font) image_after.save("{}/barcodes/{}".format(cwd,barcode_image_name)) os.remove(barcode_image_name) product_code_ent.delete(0,END) product_name_ent.delete(0,END) product_price_ent.delete(0,END)
def generate(details,path): EAN = barcode.get_barcode_class('code128') ean = EAN(details, writer=ImageWriter()) barcodePic = ean.save(path + 'barcode')
def Ean_writer(t, n): EAN = barcode.get_barcode_class('ean13') ean = EAN(u'{}'.format(t), writer=ImageWriter()) fullname = ean.save('{}'.format(n))
#importing barcode module (pip install barcode) import barcode # defining a variable with class having ean13 (13 numbers can be converted to barcode) br = barcode.get_barcode_class("ean13") # 13 digit number you want to convert to barcode Br = br("0123456789123") # saving the barcode with name barcode (it will save as barcode.svg in same directory) qr = Br.save("barcode")
except OSError, e: print('Test not run.') print('Error:', e) sys.exit(1) objects = [] append = lambda x, y: objects.append(OBJECTS.format(filename=x, name=y)) append_img = lambda x, y: objects.append(IMAGES.format(filename=x, name=y)) options = dict(module_width=0.495, module_height=25.0) for codename, code in TESTCODES: bcode = get_barcode(codename, code) filename = bcode.save(os.path.join(TESTPATH, codename)) print('Code: {0}, Input: {1}, Output: {2}'.format( bcode.name, code, bcode.get_fullcode())) append(filename, bcode.name) if ImageWriter is not None: bcodec = get_barcode_class(codename) bcode = bcodec(code, writer=ImageWriter()) opts = dict(font_size=14, text_distance=1) if codename.startswith('i'): opts['center_text'] = False filename = bcode.save(os.path.join(TESTPATH, codename), opts) append_img(filename, bcode.name) else: objects.append(NO_PIL) # Save htmlfile with all objects with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f: obj = '\n'.join(objects) f.write(HTML.format(version=__version__, body=obj)) if __name__ == '__main__':
def crate_barcode(self, provided, item): code = barcode.get_barcode_class(provided) bar = code(item, writer=barcode.writer.ImageWriter()) bar.save( os.path.join(os.path.join(self.get_current_path(), 'Img'), provided + "_" + item))
def billing_barcode_image(request): # LCMT 0115547010161 # LCB1 0105538110884 taxId = request.GET['tax'] ref1 = request.GET['ref1'] ref2 = request.GET['ref2'] terminal = request.GET['terminal'] if 'ref2' in request.GET: ref2 = request.GET['ref2'] else: ref2 = '' # TO set Ref2 to identify Terminal , A0 = 00 , B1 = 01 if ref2 == '': ref2 = '00' if terminal == 'LCMT' else '01' amount = request.GET['amount'] # suffix = '10' #TMB work, but KBank not working # Modify by Chutchai on June 11,2020 # change from 00 to 10 to support TMB (version 1.8) suffix = '10' # Convert Ref1 ref1 = convert_ref1(ref1) from barcode.writer import ImageWriter import barcode EAN = barcode.get_barcode_class('code128') # EAN.default_writer_options['write_text'] = False # EAN.default_writer_options['human'] = 'ABC' # EAN.render(self.writer.ImageWriter,text='sdas') # data = '|%s\n%s\n%s\n%s\n%s' % (taxId,suffix,ref1,ref2,amount) # Modify on March 26, 2020 # To remove new line and remove Dot on amount # data = '|%s%s\r\n%s\r\n%s\r\n%s' % (taxId,suffix,ref1,ref2,amount.replace('.','')) # Update on Apr 30,2020 -- Remove New Line data = '|%s%s\r%s\r%s\r%s' % (taxId, suffix, ref1, ref2, amount.replace('.', '')) print(data) ean = EAN(data, writer=ImageWriter()) # ean.render(writer_options=ImageWriter(),text='sds') fullname = ean.save('barcode') #Add Text below Barcode from PIL import Image, ImageFont, ImageDraw im = Image.open("barcode.png") width, height = im.size d = ImageDraw.Draw(im) # print ('Barcode size : %s %s' % (width, height)) # data = 'LCB1&LCMT' # data = data.replace('\n',' ') data = '| %s %s %s %s %s' % (taxId, suffix, ref1, ref2, amount) font = ImageFont.truetype('arial.ttf', size=28) ascent, descent = font.getmetrics() (font_width, baseline), (offset_x, offset_y) = font.font.getsize(data) # print ('Text Width :%s' % (font_width)) font.width = width location = ((width / 2) - (font_width / 2), height - 80) d.text(location, data, fill=(0, 0, 0), font=font) # Put version on Right&Bottom version = 'Version 1.8' font = ImageFont.truetype('arial.ttf', size=12) ascent, descent = font.getmetrics() (font_width, baseline), (offset_x, offset_y) = font.font.getsize(version) location = (width - (font_width), height - 60) d.text(location, version, fill=(0, 0, 0), font=font) im.save('barcode_out.png') cropped_example = im.crop((0, 0, width, height - 40)) cropped_example.save('barcode_new.png') image_data = open("barcode_new.png", "rb").read() return HttpResponse(image_data, content_type="image/png")
#!/usr/bin/env python # pip install viivakoodi import barcode from barcode.writer import ImageWriter try: import Image, ImageDraw, ImageFont except ImportError: from PIL import Image, ImageDraw, ImageFont CODE128 = barcode.get_barcode_class('code128') FONT = "Helvetica.ttf" options = { "module_width": 0.254, # 3 dots / 300 dpi * 25.4mm/in "module_height": 10.0, # The height of the barcode modules in mm "quiet_zone": 0.0, # Distance on the left and on the right from the border to the first (last) barcode module in mm as float. Defaults to 6.5. "font_size": 18, # Font size of the text under the barcode in pt as integer. Defaults to 10. "text_distance": 0.7, # Distance between the barcode and the text under it in mm as float. Defaults to 5.0. } label_sizes = { "17x54": ( 566, 165 ), # printable area: 47.92mm x 13.97mm (566dots x 165dots in 300dpi = 135.84dots x 39.60dots in 72dpi) "17x87": ( 956, 165 ), # printable area: 80.94mm x 13.97mm (956dots x 165dots in 300dpi = 229.44dots x 39.60dots in 72dpi)
def show(): """ This action shows a tourism service details. """ this_service = db.service(request.args(0,cast=int)) or redirect(URL('index', args=request.args(1,cast=int))) or redirect(URL('operator', 'index')) if this_service.operator_id.owner_id != auth.user.id: session.flash = T("Insufficient privileges") redirect(URL('default','user',args='not_authorized')) # Select service extensions db.service_extension.service_id.default = this_service.id service_extensions = db(db.service_extension.service_id==this_service.id).select() # Select photos photos = db(db.photo.service_id==this_service.id).select(orderby=db.photo.id) # Update service mean rating given by comments comments = update_mean_rating(this_service) # Retrive service prices this_year_prices, next_year_prices = det_serv_prices(this_service) # Determine for the service if it is a fixed price service determine_price_mode(this_service) # Select people limits for this service people_limits = db(db.people_limits.service_id==this_service.id).select() if people_limits: people_limits = people_limits.first() # Select timetables for service this_year_timetable, next_year_timetable, month_to_show = det_serv_timetable(this_service) if this_year_timetable and this_year_timetable.first().flexible == False and month_to_show < 0: this_service.enabled = False this_year_timetable = None # Check if availability database exists availability = check_availability(this_service) # Create barcode # Bar Code filename definition (one tmp file per user) import barcode from barcode.writer import ImageWriter from cStringIO import StringIO barCode_filename = this_service.code + 'barcode.png' EAN = barcode.get_barcode_class('ean13') # Calculate Barcode Number code = '' for i in range(5,8): code += this_service.code[i] for i in range(9,12): code += str(ord(this_service.code[i])) for i in range(12,15): code += this_service.code[i] while len(code)<13: code = '0' + code if len(code)>13: code = code[0:13] ean = EAN(code, writer=ImageWriter()) ean.default_writer_options['module_height']=15.0 ean.default_writer_options['quiet_zone']=1.5 ean.default_writer_options['text_distance']=1.0 ean.default_writer_options['dpi']=150 barCode_location = request.folder + 'static/barcodes/' + barCode_filename f = open(barCode_location, 'wb') if BARCODE == True: ean.write(f) # PIL (ImageWriter) produces RAW format here f.close() return dict(service=this_service, extensions=service_extensions, photos=photos, comments=comments, this_ypr=this_year_prices, next_ypr=next_year_prices, people_limits=people_limits, this_ytt=this_year_timetable, next_ytt=next_year_timetable, month_show=month_to_show, available = availability, barCode = 'barcodes/' + barCode_filename)
def barcode_to_png(barcode_type, text_str, filename): EAN = barcode.get_barcode_class(barcode_type) ean = EAN(text_str, writer=ImageWriter()) ean.save(filename)
# -*- coding: utf-8 -*- from __future__ import unicode_literals import barcode from barcode.writer import ImageWriter from StringIO import StringIO from shutil import copyfileobj C39 = barcode.get_barcode_class('code39') def generateBarCode(code): try: print u"正在生成条形码: "+unicode(code) ean = C39(code, writer=ImageWriter(), add_checksum=False) fp = StringIO() ean.write(fp) fp.seek(0) # move buffer back to 0 return fp except: raise Exception('Failed to generate barcode') return None if __name__=="__main__": fp = generateBarCode(u"QT7689564545") img = open('test.png', 'w') copyfileobj(fp,img) img.close()
def __init__(self, printer_name): self.printer_conn = cups.Connection() self.code39 = barcode.get_barcode_class('code39') self.printer = printer_name
def invoice(canvas, application): """ Draw a membership invoice from to a canvas from an application objects. @param application {Application} modeemintternet.models.Application object @param canvas {Canvas} reportlab.pdfgen.canvas.Canvas object """ p = canvas # Logo on top of the page textPath = os.path.abspath(os.path.join(settings.PROJECT_DIR, 'static', 'logo', 'text.eps')) p.drawImage(textPath, 50, 710, height=100, preserveAspectRatio=True, anchor='nw') p.drawString(70, 720, 'Modeemi ry c/o TTY') p.drawString(70, 700, 'PL 553') p.drawString(70, 680, 'FIN-33101 Tampere') # Box containing the user information p.drawString(50, 560, 'Sähköposti') p.drawString(310, 560, application.email) p.rect(40, 550, 500, 30) p.drawString(50, 530, 'Nimi') p.drawString(310, 530, application.first_name + ' ' + application.last_name) p.rect(40, 520, 500, 30) p.drawString(50, 500, 'Haluamani käyttäjätunnus') p.drawString(310, 500, application.primary_nick) p.rect(40, 490, 500, 30) p.drawString(50, 470, 'Jos jo käytössä') p.drawString(310, 470, application.secondary_nick) p.rect(40, 460, 500, 30) p.drawString(50, 440, 'Haluamani komentokehoite') p.drawString(310, 440, application.shell) p.rect(40, 430, 500, 30) p.drawString(50, 410, 'Hakemus tehty') p.drawString(310, 410, application.applied.strftime('%d.%m.%Y')) p.rect(40, 400, 500, 30) # Line delimiting the pre-filled and user-filled parts p.line(300, 400, 300, 580) # Draw the bank information grid # Horizontal lines p.line(0, 40, 600, 40) p.line(0, 70, 600, 70) p.line(300, 100, 600, 100) p.line(0, 200, 300, 200) p.line(0, 250, 600, 250) p.line(0, 300, 600, 300) # Vertical lines p.line(300, 40, 300, 300) p.line(350, 40, 350, 100) p.line(450, 40, 450, 70) p.line(70, 200, 70, 300) # Texts p.drawString(90, 270, 'FI10 2243 1800 0057 39') p.drawString(320, 270, 'NDEAFIHH') p.drawString(90, 220, 'Modeemi ry') p.drawString(90, 175, application.first_name + ' ' + application.last_name) p.drawString(370, 80, application.bank_reference) deadline = application.applied + timedelta(days=21) p.drawString(370, 50, deadline.strftime('%d.%m.%Y')) p.drawString(550, 50, '8,00') p.setFontSize(7) p.drawString(40, 290, 'Tilinro') p.drawString(80, 290, 'IBAN') p.drawString(310, 290, 'BIC') p.drawString(40, 240, 'Saaja') p.drawString(310, 90, 'Viitenro') p.drawString(310, 60, 'Eräpäivä') p.drawString(460, 60, 'Euro') p.drawString(30, 180, 'Maksajan') p.drawString(39, 170, 'nimi ja') p.drawString(41, 160, 'osoite') p.drawString(45, 95, 'Alle-') p.drawString(33, 85, 'kirjoitus') p.line(70, 80, 300, 80) p.drawString(30, 60, 'Tililtä nro') generator = barcode.get_barcode_class('code128') img = generator(code128(application), writer=ImageWriter()).save('/tmp/barcode') p.drawImage(img, 150, 5, height=30, width=300, anchor='nw') return p
def createPrintTicket(d, promo, **kwargs): canvas = Image.open(config.Ticket.TEMPLATE_FILE) #Generate Barcode code39 = barcode.get_barcode_class('code39') barcodeImage = code39(d.code, writer=barcode.writer.ImageWriter()) barcodeImage = barcodeImage.render({'dpi':config.Ticket.BARCODE_DPI,'module_height':config.Ticket.BARCODE_HEIGHT}) #Insert Barcode canvas.paste(barcodeImage, config.Ticket.BARCODE_POS) drawCanvas = ImageDraw.Draw(canvas) x,y = config.Ticket.BARCODE_POS font = ImageFont.truetype(config.Ticket.FONT,config.Ticket.BARCODE_TEXT_SIZE) drawCanvas.text(config.Ticket.BARCODE_TEXT_POS, d.code, (0,0,0),font=font) #Render Ticket Name & Price ticketName = d.ticketName.decode('utf8') ticketPrice = d.ticketPrice.decode('utf8') ticketCurrency = d.ticketCurrency.replace("€","€").decode('utf8') font = ImageFont.truetype(config.Ticket.FONT, config.Ticket.FONT_SIZE) drawCanvas.text(config.Ticket.TICKET_NAME_POS, ticketName, (0,0,0), font=font) drawCanvas.text(config.Ticket.PRICE_POS, ticketPrice + " " + ticketCurrency , (0,0,0), font=font) #Render Name font = ImageFont.truetype(config.Ticket.FONT,config.Ticket.FONT_SIZE) name = d.name.decode('utf8') if not promo: printedName = name while True: (w, h) = drawCanvas.textsize(name,font=font) if w < config.Ticket.NAME_MAX_LENGTH: break else: printedName = printedName[:-1] drawCanvas.text(config.Ticket.NAME_POS, printedName, (0,0,0), font=font) else: #Render Logo logo = Image.open(kwargs["logo"]) if config.Ticket.LOGO_SCALE != 1: logo = logo.resize((int(logo.size[0] * config.Ticket.LOGO_SCALE), int(logo.size[1] * config.Ticket.LOGO_SCALE))) canvas.paste(logo, config.Ticket.LOGO_POS) ticketImagePath = "%s/%s.%s" % (config.Ticket.OUTPUT_DIR, d.code, config.Ticket.OUTPUT_FORMAT) try: os.mkdir(config.Ticket.OUTPUT_DIR) except OSError: pass try: canvas.save(ticketImagePath) except: print "Cannot save ticket image to %s" % (ticketImagePath,) pageTicketPath = "%s/%s.pdf" % (config.TicketPage.OUTPUT_DIR, d.code) htmlTemplate = config.TicketPage.TEMPLATE % { 'name' : name, 'code' : d.code, 'ticket' : ticketImagePath, 'price' : ticketPrice, 'desc' : ticketName } try: os.mkdir(config.TicketPage.OUTPUT_DIR) except OSError: pass if os.path.exists(pageTicketPath): print "File already exist %s" % (pageTicketPath) try: os.remove(pageTicketPath) except Exception as e: print e exit(1) try: print "Create ticket %s for %s" % (d.code, name) pisa.CreatePDF(StringIO.StringIO(htmlTemplate.encode('ascii', 'xmlcharrefreplace')), open(pageTicketPath,'wb')) except: print "Cannot write PDF ticket to %s" % (pageTicketPath,)
def batCodeSvgGenerator(stockNumber): EAN = barcode.get_barcode_class('ean13') ean = EAN(stockNumber, writer=ImageWriter()) ean.save("media\\uploads\\" + str(stockNumber)) return "media\\uploads\\" + str(stockNumber) + ".png"
import csv import barcode from barcode.writer import ImageWriter from PIL import Image print('Chose barcode standard') print(barcode.PROVIDED_BARCODES) # prints out compatible barcode types barChoice = input() # by typing in correctly you set the type and store it in the variable barType = barcode.get_barcode_class(barChoice) # this imports that excact type into generator print(barType) print('Press 1 for SVG or 2 for PNG?') fileformatChoice = input() print('Type name of file') nameFile = input() # name of the csv file to import (only name not the .csv extention) if fileformatChoice == '1': with open("%s.csv" % nameFile) as readCSV: reader = csv.reader(readCSV) # open csv file and store into reader for row in reader: # for every row in reader do: x = ("".join(row)) # converting each row from list to a string barValue = barType(x) # store the raw value of barcode print(barValue) # print out the raw value fileName = barValue.save('./output/%s' % x) # save the barcode as .svg in folder "output" print(fileName) elif fileformatChoice == '2': with open("%s.csv" % nameFile) as readCSV: reader = csv.reader(readCSV) # open csv file and store into reader for row in reader: # for every row in reader do:
from docx import Document from docx.shared import Inches import barcode from barcode.writer import ImageWriter label = "704041" CODE39 = barcode.get_barcode_class('code39') CODE39.default_writer_options['module_height'] = 3.0 CODE39.default_writer_options['module_width'] = 0.01 CODE39.default_writer_options['text_distance'] = 0.3 CODE39.default_writer_options['font_size'] = 16 #ean = barcode.get_barcode('code39', label, writer=ImageWriter()) #ean.default_writer_options['module_height'] = 3.0 #ean.default_writer_options['add_checksum'] = False #ean.default_writer_options[''] = 0.2 #ean.calculate_size(dpb) code39 = CODE39(label, writer=ImageWriter(), add_checksum=False) pngfile = 'C:\\data\\' + label filename = code39.save(pngfile) #filename = ean.save(pngfile) document = Document() sections = document.sections for section in sections: section.top_margin = Inches(0.1) section.bottom_margin = Inches(0.2) section.left_margin = Inches(0.25) section.right_margin = Inches(0.3) p = document.add_paragraph() r = p.add_run()
def _createBarcode(self) -> None: """Create barcode.""" if self.barcode["value"] == "": return if self.barcode["type"] == BARCODE_ANY: logger.warning("Usando %s por defecto" % self.typeToName(BARCODE_128)) self.barcode["type"] = BARCODE_128 type_ = self.typeToName(self.barcode["type"]) value_ = self.barcode["value"] bg_ = self.barcode["bg"] fg_ = self.barcode["fg"] if not isinstance(self.barcode["bg"], str): bg_ = QtGui.QColor(self.barcode["bg"]).name() if not isinstance(self.barcode["fg"], str): fg_ = QtGui.QColor(self.barcode["fg"]).name() margin_ = self.barcode["margin"] / 10 render_options: Dict[str, Any] = {} render_options["module_width"] = 0.6 render_options["module_height"] = 10 render_options["background"] = bg_.lower() render_options["foreground"] = fg_.lower() render_options["font_size"] = 8 render_options["write_text"] = self.barcode["text"] render_options["text_distance"] = 35 render_options["quiet_zone"] = margin_ if self.barcode["text"]: render_options["text"] = value_ else: render_options["text"] = " " barC = barcode.get_barcode_class(type_.lower()) try: bar_ = barC(u"%s" % value_) except Exception: bar_ = barC("000000000000") svg = bar_.render(render_options) xml_svg = load2xml(svg.decode("utf-8")).getroot() xwidth, xheight = xml_svg.get("width"), xml_svg.get("height") if xwidth and xheight: svg_w = 3.779 * float(xwidth[0:6]) svg_h = 3.779 * float(xheight[0:6]) else: logger.warning("width or height missing") svg_w = 0.0 svg_h = 0.0 self.p = QtGui.QPixmap(int(svg_w), int(svg_h)) render = QtSvg.QSvgRenderer(svg) self.p.fill(QtCore.Qt.transparent) painter = Qt.QPainter(self.p) render.render(painter, Qt.QRectF(0, 0, svg_w * 3.4, svg_h * 3.4)) if self.p.isNull(): self.barcode["valid"] = False else: if self.barcode["scale"] != 1.0: wS_ = self.barcode["x"] * self.barcode["scale"] hS_ = self.barcode["y"] * self.barcode["scale"] self.p = self.p.scaled(wS_, hS_) self.barcode["x"] = self.p.width() self.barcode["y"] = self.p.height() self.barcode["valid"] = True
import barcode from barcode.writer import ImageWriter from barcode import generate #print(barcode.PROVIDED_BARCODES) EAN = barcode.get_barcode_class('ean13') ean = EAN(u'5901234123457') fullname = ean.save('ean13_barcode') #creates barcode svg ''' ean = EAN(u'5901234123457', writer=ImageWriter()) #creates barcode image fullname = ean.save('ean13_barcode') ''' ''' fp = open('a.txt','wb') ean.write(fp) ''' ''' name = generate('EAN13', u'5901234123457', output='barcode_svg') '''
break if (Key == ord("c")): ean = self.EAN(Barcode) BarcodeName = ean.save('barcodes/' + Barcode) ImageName = "images/{}.jpg".format(Barcode) if (ImageName == 'images/.jpg'): pass else: cv.imwrite(ImageName, BlurImage) print("{} Lagret".format(ImageName)) Count += 1 else: Ret = False break if __name__ == '__main__': """ Setter noen spesial variaber som __name__ og kjører all av koden som fant seg i filen Lager 2 variable EAN: class(code39) Capture = webkamera som er koblet til pc-en 1 for webkamera 0 for innebygde kamera på pc-en Kaller klassen og gir verdi for variablene så kaller den andre funskjonen for å kjøre programmet """ EAN = barcode.get_barcode_class('code39') Capture = cv.VideoCapture(1) CaptureFrame(EAN, Capture).getFrame()
barcodes = {'OP0001': 'https://google.com'} barcodes['OP0002'] = 'https://dannydannydanny.github.io' path_data = './python/data/' # Dev file_json = 'barcodes.json' # %% Write dictionary to json file with open(path_data + file_json, 'w') as f: json.dump(barcodes, f) # %% Read dictionary from json file with open(path_data + file_json, 'r') as f: barcodes = json.load(f) # %% ENCODING DATA IN A BARDCODE and SHOW BARCODE encoder_c128 = barcode.get_barcode_class('code128') text_to_encode = 'Hello, world!' filename = 'barcode' mybarcode = encoder_c128(text_to_encode) fullname = mybarcode.save(path_data + filename) SVG(filename=path_data + filename + '.svg') def text_to_barcode_svg(text_to_encode, path, filename): encoder_c128 = barcode.get_barcode_class('code128') mybarcode = encoder_c128(text_to_encode) mybarcode.save(path + filename) print('encoded ' + text_to_encode + ' as ' + path + filename)
i_hist = hist(img, 13) print(i_hist) res = "" for j in range(13): val = i_hist[j] if val <= bins[j][8]: for k in range(9): if val <= bins[j][k]: res += str(k) break else: res += str(9) print(res) EAN = barcode.get_barcode_class('ean13') ean = EAN(res, writer=ImageWriter()) fullname = ean.save('barcode') window.Element('image').Update(data=get_img_data(fullname)) img = scale(img, 3) #img_png = [] #for i in img: # col = [] # for j in i: # col.append(j) # img_png.append(col) #img_png = np.array(img_png) res_png = png.from_array(img, 'L').save("temp.png") window.Element('pic').Update(data=get_img_data("temp.png"))
def text_to_barcode_svg(text_to_encode, path, filename): encoder_c128 = barcode.get_barcode_class('code128') mybarcode = encoder_c128(text_to_encode) mybarcode.save(path + filename) print('encoded ' + text_to_encode + ' as ' + path + filename)
def create_barcode(self, serial): code39 = barcode.get_barcode_class('code39') c39 = code39(str(serial), writer=ImageWriter()) fullname = c39.save('barcode')
def imprimir( request, pk, din = '4'): credentials = tools.getImpersonateUser(request) (user, _ ) = credentials professor = User2Professor( user ) instance = get_object_or_404( Sortida, pk = pk ) instance.flag_clean_nomes_toco_alumnes = True fEsDireccioOrGrupSortides = request.user.groups.filter(name__in=[u"direcció", u"sortides"] ).exists() potEntrar = ( professor in instance.professors_responsables.all() or professor in instance.altres_professors_acompanyants.all() or fEsDireccioOrGrupSortides ) if not potEntrar: raise Http404 #Preparo el codi de barres import time import barcode from PIL import Image from barcode.writer import ImageWriter CodiBarres = barcode.get_barcode_class(u'code128') codi_barres = CodiBarres(instance.codi_de_barres or "x", writer=ImageWriter()) barres = codi_barres.save("/tmp/barcode-{0}-{1}".format( time.time(), request.session.session_key )) im = Image.open(barres) im=im.crop( (20,20,385,50,) ) s = im.size #im = im.resize((int(s[0] * 0.8), int(s[1] * 0.8))) im.save(barres) alumnes_que_hi_van = set( instance.alumnes_convocats.all() ) alumnes_que_no_hi_van = set( instance.alumnes_que_no_vindran.all() ) alumnes = list( alumnes_que_hi_van - alumnes_que_no_hi_van ) report = [] for alumne in Alumne.objects.filter( pk__in = [ a.id for a in alumnes ] ): o = classebuida() o.alumne = unicode( alumne ) o.grup = unicode( alumne.grup ) o.ciutat = instance.ciutat o.preu = instance.preu_per_alumne o.departament = unicode( instance.departament_que_organitza ) if instance.departament_que_organitza else instance.comentari_organitza o.titol = instance.titol_de_la_sortida o.desde = instance.calendari_desde.strftime( "%H:%Mh del %d/%m/%Y" ) o.desde_dia = instance.calendari_desde.strftime( "%d/%m/%Y" ) o.finsa = instance.calendari_finsa.strftime( "%H:%Mh del %d/%m/%Y" ) o.mitja = instance.get_mitja_de_transport_display() o.programa_de_la_sortida = instance.programa_de_la_sortida.split("\n") or ['',] o.condicions_generals = instance.condicions_generals.split("\n") or ['-',] o.terminipagament = u"" if not bool( instance.termini_pagament ) else u"- darrer dia pagament {0} -".format( instance.termini_pagament.strftime( '%d/%m/%Y' ) ) report.append(o) o.barres = barres o.informacio_pagament = instance.informacio_pagament.split("\n") or ['-',] o.te_codi_barres = bool(instance.codi_de_barres) #from django.template import Context from appy.pod.renderer import Renderer import cgi import os from django import http excepcio = None #try: #resultat = StringIO.StringIO( ) resultat = "/tmp/DjangoAula-temp-{0}-{1}.odt".format( time.time(), request.session.session_key ) #context = Context( {'reports' : reports, } ) path = os.path.join( settings.PROJECT_DIR, '../customising/docs/autoritzacio2.odt') if din==4 else os.path.join( settings.PROJECT_DIR, '../customising/docs/autoritzacio2-A5.odt') if not os.path.isfile(path): path = os.path.join(os.path.dirname(__file__), 'templates/autoritzacio2.odt') if din=='4' else os.path.join(os.path.dirname(__file__), 'templates/autoritzacio2-A5.odt') renderer = Renderer(path, {'report' :report, }, resultat) renderer.run() docFile = open(resultat, 'rb') contingut = docFile.read() docFile.close() os.remove(resultat) #barcode os.remove(barres) # except Exception, e: # excepcio = unicode( e ) if True: #not excepcio: response = http.HttpResponse( contingut, content_type='application/vnd.oasis.opendocument.text') response['Content-Disposition'] = u'attachment; filename="{0}-{1}.odt"'.format( "autoritzacio_sortida", pk ) else: response = http.HttpResponse('''Als Gremlin no els ha agradat aquest fitxer! %s''' % cgi.escape(excepcio)) return response
array.append(x[1]) print(array, '\n') os.remove('barcode.png') while True: inp = input( 'Select the number of your barcode choice\n1-EAN-8\n2-CODE 128\n3-CODE 39\n0-QUIT\n\n' ) # for ean 8 barcod type if inp == '1' or inp == 'EAN-8' or inp == 'ean-8' or inp == 'ean': print("EAN-8 is working and requires minimum 7 numbers\n") code = input("Enter code of your barcode:\n") # running code thrugh the package EAN = barcode.get_barcode_class('ean8') ean = EAN(code) # storing svg for display ean.save('SVG_IMAGE') # using image writer for ong image to use in processing png = EAN(code, writer=ImageWriter()) imag = png.save('barcode') barcodeworking() elif inp == '2' or inp == 'CODE 128' or inp == 'code 128' or inp == 'c128' or inp == 'C128': print("CODE 128 is working\n") code = input("Enter code of your barcode:\n") C128 = barcode.get_barcode_class('code128') c128 = C128(code) c128.save('SVG_IMAGE') png = C128(code, writer=ImageWriter())
# ############################################################################## import time from openerp.report import report_sxw from openerp.osv import osv from openerp import pooler import base64 import urllib,urllib2 import barcode import os barcode.PROVIDED_BARCODES ['code39', 'ean', 'ean13', 'ean8', 'gs1', 'gtin', 'isbn', 'isbn10', 'isbn13', 'issn', 'jan', 'pzn', 'upc', 'upca'] [u'code39', u'code128', u'ean', u'ean13', u'ean8', u'gs1', u'gtin',u'isbn', u'isbn10', u'isbn13', u'issn', u'jan', u'pzn', u'upc', u'upca'] [u'code39', u'code128', u'ean', u'ean13', u'ean8', u'gs1', u'gtin', u'isbn', u'isbn10', u'isbn13', u'issn', u'jan', u'pzn', u'upc', u'upca'] EAN = barcode.get_barcode_class(u'code39') from barcode.writer import ImageWriter class order(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): super(order, self).__init__(cr, uid, name, context=context) self.localcontext.update({ 'time': time, 'get_artwork':self._get_artwork, 'get_barcode':self._get_barcode, }) def _get_artwork(self, obj): attach = self.pool.get('ir.attachment') res = '' attach_ids = attach.search(self.cr, self.uid, [('res_id','=',obj.id),('res_name','=',obj.name)]) if attach_ids:
def write(): st.header("Stregkodegenererator til delehold") if st.checkbox( "Vis hjælp til at lokalisere elevoversigt fra Cicero og Lectio"): st.info( "__Elevoversigt fra Cicero:__ \n" "Start med at uploade en elevoversigt fra cicero. \n" "Åben Cicero og gå til 'Cirkulation' --> 'Låner'. \n" "Angiv alle klasser under 'Lånergrupper' og søg. \n" "Tryk på 'Print og eksporter' i venstre hjørne og vælg 'Eksporter viste: CSV'. \n" " \n" "__Elevoversigt fra Lectio:__ \n" "Log ind på Lectio. \n" "Gå til 'Hovedmenu' og vælg 'Importer/Eksporter data'. \n" "Tryk på 'Excel' under kolonnen 'Eksporter' ud fra rækken 'Elever'." ) # upload fra Cicero st.write("__Upload elevoversigt fra Cicero__") Elever_Cicero_file = st.file_uploader( "Uploade eksport af fuld elevoversigt fra Cicero i csv-format", type="csv") if Elever_Cicero_file is not None: Elever_Cicero_data = pd.read_csv(Elever_Cicero_file, sep=';', na_filter=False) Elever_Cicero_data.drop( ["Adresse", "Postnummer & by", "Telefon", "E-mail"], axis=1, inplace=True) Elever_Cicero_data = Elever_Cicero_data.rename( columns={"Lånergrupper": "Stamklasse"}) if st.checkbox("Vis elevoversigt fra Cicero"): st.write(Elever_Cicero_data) # upload fra Lectio st.write("__Upload elevoversigt fra Lectio__") Elever_Lectio_file = st.file_uploader( "Uploade eksport af fuld elevoversigt fra Lectio i xlsx-format", type="xlsx") if Elever_Lectio_file is not None: Elever_Lectio_data = pd.read_excel(Elever_Lectio_file, sep=';', na_filter=False) Elever_Lectio_data.drop([ "Id", "PNr", "Afdeling", "Brugernavn", "CPR-NUMMER", "TELEFON 1", "TELEFON 2", "Adresse CO", "Adresse", "Stednavn", "Postnummer", "Kommunenr", "Email" ], axis=1, inplace=True) Elever_Lectio_data = Elever_Lectio_data.rename( columns={"KaldeNavn": "Navn"}) if st.checkbox("Vis elevoversigt fra Lectio"): st.write(Elever_Lectio_data) st.write("__Hvilke holdoversigter ønskes genereret?__") # Lav oversigt over alle delehold Hold = set() for line in Elever_Lectio_data["Hold"]: Hold_temp = line.split(",") for elem in Hold_temp: if elem.startswith(" "): Hold.add(elem[1:]) else: Hold.add(elem) Hold = list(Hold) Hold.sort() Valgte_hold = st.multiselect("Du kan vælge flere hold på én gang.", options=Hold) # Generer stregkoder if Elever_Cicero_file and Elever_Lectio_file is not None and len( Hold) != 0: #generate_barcodes(Elever_Cicero_data, Elever_Lectio_data, Valgte_hold) # Lav en sammensat dataframe af de to uploadede filer Elever_merged_data = pd.merge(Elever_Cicero_data, Elever_Lectio_data, on=["Navn", "Stamklasse"]) Elever_merged_data = Elever_merged_data.sort_values("Navn", axis=0) #Elever_merged_data = Elever_merged_data.sort_values("Navn", axis=0, ignore_index=True) if st.checkbox("Vis samlet elevoversigt"): st.write(Elever_merged_data) # Find elever som ikke eksisterer i begge filer Elever_med_fejl = pd.concat([Elever_Cicero_data, Elever_Lectio_data]).drop_duplicates( subset=['Navn', 'Stamklasse'], keep=False) if len(Elever_med_fejl) == 0: st.info( "Der var ingen elever som kun var at finde i en enkelt fil.") elif len(Elever_med_fejl) != 0: st.warning("__Følgende elever var ikke at finde i begge filer:__") st.write(Elever_med_fejl) # Den resterende kode sættes i gang når brugeren ønsker det if st.button("Generer filer med stregkoder for de valgte hold"): # Genereate folder to barcodes try: os.mkdir('Barcodes') except OSError: print("Creation of the directory %s failed" % path) # Generer stregkodeark for hvert af de valgte hold for hold in range(0, len(Valgte_hold)): # Generer dataframe hvor hvert af de valgte hold Valgt_hold_temp = pd.DataFrame( columns=["Navn", "Lånernummer", "Stamklasse", "Hold"]) for row in range(0, len(Elever_merged_data["Hold"])): if Valgte_hold[hold] in Elever_merged_data["Hold"][row]: if len(Valgt_hold_temp) == 0: Valgt_hold_temp = Elever_merged_data.loc[[row]] elif len(Valgt_hold_temp) != 0: Valgt_hold_temp = Valgt_hold_temp.append( Elever_merged_data.loc[[row]], sort=False, ignore_index=True) # Generer stregkolder for hvert af de valgte hold code39_class = barcode.get_barcode_class('code39') opts = { 'module_width': 0.2, 'module_height': 8.0, 'font_size': 15, 'text_distance': 1 } for elem in range(0, len(Valgt_hold_temp['Lånernummer'])): Loannumber = Valgt_hold_temp['Lånernummer'][elem] code39 = code39_class(str(Loannumber), writer=ImageWriter(), add_checksum=False) save_code = code39.save('Barcodes/' + str(Loannumber), options=opts) ### Generer tom PDF ### dato = dt.date.today() Filnavn = str(Valgte_hold[hold]) + ' - ' + str(dato) + '.pdf' save_name = os.path.join(os.path.expanduser("~"), "Desktop", Filnavn) pdf = SimpleDocTemplate(save_name, pagesize=A4, rightMargin=15, leftMargin=15, topMargin=15, bottomMargin=15) # Data for header header_data = [[ 'Antal elever: ' + str(len(Valgt_hold_temp)), str(dato), str(Valgte_hold[hold]) ]] # List of list med navne og barcodes names = [] images = [] for elem in range(0, len(Valgt_hold_temp['Lånernummer'])): # Data om navne Navn = Valgt_hold_temp["Navn"][elem] names.append(Navn) # Data om barcodes Loannumber = Valgt_hold_temp['Lånernummer'][elem] image = PIL.Image.open('Barcodes/' + str(Loannumber) + '.png') width, height = image.size image_Loannumber = Image('Barcodes/' + str(Loannumber) + '.png') image_Loannumber.drawWidth = width / 4 image_Loannumber.drawHeight = height / 4 images.append(image_Loannumber) # Generer tabel ud fra List of list med navne og barcodes data = [] start = 0 s**t = 3 for elem in range(0, len(names), 3): data += [names[start:s**t], images[start:s**t]] start += 3 s**t += 3 # Generer tabeller header = Table(header_data, colWidths=2.55 * inch) table = Table(data, colWidths=2.55 * inch) # table style header ts = TableStyle([('FONTSIZE', (0, 0), (-1, -1), 12), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('LEFTPADDING', (0, 0), (-1, -1), 1), ('RIGHTPADDING', (0, 0), (-1, -1), 1), ('BOTTOMPADDING', (0, 0), (-1, -1), 10), ('TOPPADDING', (0, 0), (-1, -1), 5)]) header.setStyle(ts) # table style til stregkoder og navne ts = TableStyle([('FONTSIZE', (0, 0), (-1, -1), 9), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('LEFTPADDING', (0, 0), (-1, -1), 1), ('RIGHTPADDING', (0, 0), (-1, -1), 1), ('BOTTOMPADDING', (0, 0), (-1, -1), 1), ('TOPPADDING', (0, 0), (-1, -1), 1)]) table.setStyle(ts) # Tilføj elemter til pdf elems = [] elems.append(header) elems.append(table) pdf.build(elems) if len(Valgte_hold) == 1: st.success( 'Succes! \n' + str(len(Valgte_hold)) + ' PDF-fil er genereret. Filerne er placeret på skrivebordet.' ) elif len(Valgte_hold) > 1: st.success( 'Succes! \n' + str(len(Valgte_hold)) + ' PDF-filer er genereret. Filerne er placeret på skrivebordet.' ) elif len(Valgte_hold) == 0: st.error( 'Du mangler at vælge hvilke holdoversigter som ønskes genereret.' ) # Delete barcodes shutil.rmtree('Barcodes')
from parameters import * from transform_utils import TransformUtils #First, delete everything in ./dataset cwd = os.getcwd() path = os.path.join(cwd, generation_folder) os.chdir(path) for image_path in glob.glob("*.png"): file_path = os.path.join(path, image_path) os.unlink(file_path) if os.path.exists(os.path.join(path, 'labels.txt')): os.unlink(os.path.join(path, 'labels.txt')) os.chdir("../") coder = barcode.get_barcode_class(barcode_type) T = TransformUtils(w=WIDTH, h=HEIGHT) labels = np.array([np.zeros((nb_img, 10), dtype=np.bool_)] * 10) for k in range(nb_img): nb = rd.randint(0, max_barcode_number) nb_digits = len(str(max_barcode_number)) nb = str(nb).zfill(nb_digits) barcode = coder(nb, ImageWriter(), add_checksum=False) barcode.save("./" + generation_folder + '/temp', options=barcode_options) temp = cv2.imread("./" + generation_folder + '/temp.png', cv2.IMREAD_GRAYSCALE) ########################################################## ################### DATA AUGMENTATION #################### ########################################################## if rd.random() < 0.5:
def gen_apple_wallet(barcode_type, barcode_input): if request.method == 'POST': if request.is_json: content = request.get_json(silent=False) else: content = {'name': 'Membership Card'} elif request.method == 'GET': if request.is_json: content = request.get_json(silent=False) else: content = request.args else: return 'Bad request.' pass_name = decode_input(content.get('name', 'Membership Card')) pass_description = decode_input( content.get('description', 'My membership card ' + barcode_type + ' pass')) pass_header_text = decode_input(content.get('header_text')) pass_header_value = decode_input(content.get('header_value')) pass_primary_text = decode_input(content.get('primary_text')) pass_primary_value = decode_input(content.get('primary_value')) pass_icon = decode_input( content.get( 'icon', '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' )) pass_logo = decode_input( content.get( 'logo', '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' )) pass_location = decode_input(content.get('location', False)) pass_latitude = decode_input(content.get('latitude', '0')) pass_longitude = decode_input(content.get('longitude', '0')) pass_relevant_text = decode_input( content.get('relevant_text', 'A pass is available for use here')) pass_foreground_color = decode_input( content.get('foreground_color', 'rgb(0,0,0)')) pass_background_color = decode_input( content.get('background_color', 'rgb(37,170,225)')) pass_label_color = decode_input( content.get('label_color', 'rgb(241,92,34)')) pass_debug = content.get('debug', False) if pass_debug: print(pass_name) print(pass_description) print(pass_icon) print(pass_logo) print(pass_location) print(pass_latitude) print(pass_longitude) print(pass_relevant_text) print(pass_foreground_color) print(pass_background_color) print(pass_label_color) simplename = re.sub('[^a-zA-Z0-9]', '', pass_name).lower() if barcode_type.upper() == 'C39': if len(barcode_input) < 44: pass_barcode_buffer = BytesIO() AW_C39 = barcode.get_barcode_class('Code39') AW_C39(barcode_input, writer=ImageWriter(), add_checksum=False).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad Code39 code.' elif barcode_type.upper() == 'C128': if len(barcode_input) < 129: pass_barcode_buffer = BytesIO() AW_C128 = barcode.get_barcode_class('Code128') AW_C128(barcode_input, writer=ImageWriter()).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad Code128 code.' elif barcode_type.upper() == 'EAN13': barcode_input = re.sub("\D", "", barcode_input) if len(barcode_input) == 13: pass_barcode_buffer = BytesIO() AW_EAN13 = barcode.get_barcode_class('EAN13') AW_EAN13(barcode_input, writer=ImageWriter()).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad EAN13 code.' elif barcode_type.upper() == 'EAN8': barcode_input = re.sub("\D", "", barcode_input) if len(barcode_input) == 8: pass_barcode_buffer = BytesIO() AW_EAN8 = barcode.get_barcode_class('EAN8') AW_EAN8(barcode_input, writer=ImageWriter()).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad EAN8 code.' elif barcode_type.upper() == 'JAN': barcode_input = re.sub("\D", "", barcode_input) if (barcode_input[0:2] == '45' or barcode_input[0:2] == '49') and len(barcode_input) == 13: pass_barcode_buffer = BytesIO() AW_JAN = barcode.get_barcode_class('JAN') AW_JAN(barcode_input, writer=ImageWriter()).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad JAN code.' elif barcode_type.upper() == 'ISBN13': barcode_input = re.sub("\D", "", barcode_input) if (barcode_input[0:3] == '978' or barcode_input[0:3] == '979') and len(barcode_input) == 13: pass_barcode_buffer = BytesIO() AW_ISBN13 = barcode.get_barcode_class('ISBN13') AW_ISBN13(barcode_input, writer=ImageWriter()).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad ISBN13 code.' elif barcode_type.upper() == 'ISBN10': barcode_input = re.sub("\D", "", barcode_input) if len(barcode_input) == 10: pass_barcode_buffer = BytesIO() AW_ISBN10 = barcode.get_barcode_class('ISBN10') AW_ISBN10(barcode_input, writer=ImageWriter()).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad ISBN10 code.' elif barcode_type.upper() == 'ISSN': barcode_input = re.sub("\D", "", barcode_input) if len(barcode_input) == 8: pass_barcode_buffer = BytesIO() AW_ISSN = barcode.get_barcode_class('ISSN') AW_ISSN(barcode_input, writer=ImageWriter()).render({ 'font_size': 0, 'dpi': 300 }).save(pass_barcode_buffer, format='PNG') pass_barcode = base64.b64encode(pass_barcode_buffer.getvalue()) else: return 'Bad ISSN code.' elif barcode_type.upper() == 'NOCODE': pass_barcode = None else: return 'No valid barcode type passed with the request, try again.' cardInfo = StoreCard() if not barcode_type.upper( ) == 'NOCODE' and not pass_header_text and not pass_header_value: pass_header_text = 'Account Number' pass_header_value = barcode_input if pass_header_text and pass_header_value: cardInfo.addHeaderField('header_field', pass_header_value, pass_header_text) if barcode_type.upper( ) == 'NOCODE' and pass_primary_value and pass_primary_text: cardInfo.addPrimaryField('primary_field', pass_primary_value, pass_primary_text) cardInfo.addBackField('name', pass_name, 'Name: ') cardInfo.addBackField('description', pass_description, 'Description: ') cardInfo.addBackField('credit', address, 'Created By: ') passfile = Pass(cardInfo, \ passTypeIdentifier=pass_type_id, \ organizationName=pass_name, \ teamIdentifier=team_id) passfile.logoText = pass_name passfile.description = pass_description passfile.serialNumber = pass_type_id + '.' + simplename + '.' + barcode_input passfile.barcode = '' passfile.foregroundColor = pass_foreground_color passfile.backgroundColor = pass_background_color passfile.labelColor = pass_label_color if pass_location: passfile.locations = [{ 'latitude': float(pass_latitude), 'longitude': float(pass_longitude), 'relevantText': pass_relevant_text }] passfile.addFile('icon.png', BytesIO(base64.b64decode(str(pass_icon)))) passfile.addFile('logo.png', BytesIO(base64.b64decode(str(pass_logo)))) if not barcode_type.upper() == 'NOCODE': passfile.addFile('strip.png', BytesIO(base64.b64decode(pass_barcode))) pass_encoded = base64.b64encode( passfile.create('crts/certificate.pem', 'crts/key.pem', 'crts/wwdr.pem', pass_passcode).getvalue()) return send_file(BytesIO(base64.b64decode(pass_encoded)), mimetype='application/vnd.apple.pkpass', as_attachment=True, attachment_filename='pass.pkpass')
def imprimir(request, pk): credentials = tools.getImpersonateUser(request) (user, _) = credentials professor = User2Professor(user) instance = get_object_or_404(Sortida, pk=pk) instance.flag_clean_nomes_toco_alumnes = True fEsDireccioOrGrupSortides = request.user.groups.filter( name__in=[u"direcció", u"sortides"]).exists() potEntrar = (professor in instance.professors_responsables.all() or professor in instance.altres_professors_acompanyants.all() or fEsDireccioOrGrupSortides) if not potEntrar: raise Http404 #Preparo el codi de barres import time import barcode from PIL import Image from barcode.writer import ImageWriter CodiBarres = barcode.get_barcode_class(u'code128') codi_barres = CodiBarres(instance.codi_de_barres or "x", writer=ImageWriter()) barres = codi_barres.save("/tmp/barcode-{0}-{1}".format( time.time(), request.session.session_key)) im = Image.open(barres) im = im.crop(( 20, 20, 385, 50, )) s = im.size #im = im.resize((int(s[0] * 0.8), int(s[1] * 0.8))) im.save(barres) alumnes_que_hi_van = set(instance.alumnes_convocats.all()) alumnes_que_no_hi_van = set(instance.alumnes_que_no_vindran.all()) alumnes = list(alumnes_que_hi_van - alumnes_que_no_hi_van) report = [] for alumne in Alumne.objects.filter(pk__in=[a.id for a in alumnes]): o = classebuida() o.alumne = unicode(alumne) o.grup = unicode(alumne.grup) o.ciutat = instance.ciutat o.preu = instance.preu_per_alumne o.departament = unicode( instance.departament_que_organitza ) if instance.departament_que_organitza else instance.comentari_organitza o.titol = instance.titol_de_la_sortida o.desde = instance.calendari_desde.strftime("%H:%Mh del %d/%m/%Y") o.desde_dia = instance.calendari_desde.strftime("%d/%m/%Y") o.finsa = instance.calendari_finsa.strftime("%H:%Mh del %d/%m/%Y") o.mitja = instance.get_mitja_de_transport_display() o.programa_de_la_sortida = instance.programa_de_la_sortida.split( "\n") or [ '', ] o.condicions_generals = instance.condicions_generals.split("\n") or [ '-', ] o.terminipagament = u"" if not bool( instance.termini_pagament ) else u"- darrer dia pagament {0} -".format( instance.termini_pagament.strftime('%d/%m/%Y')) report.append(o) o.barres = barres o.informacio_pagament = instance.informacio_pagament.split("\n") or [ '-', ] o.te_codi_barres = bool(instance.codi_de_barres) #from django.template import Context from appy.pod.renderer import Renderer import cgi import os from django import http excepcio = None #try: #resultat = StringIO.StringIO( ) resultat = "/tmp/DjangoAula-temp-{0}-{1}.odt".format( time.time(), request.session.session_key) #context = Context( {'reports' : reports, } ) path = os.path.join(settings.PROJECT_DIR, '../customising/docs/autoritzacio2.odt') if not os.path.isfile(path): path = os.path.join(os.path.dirname(__file__), 'templates/autoritzacio2.odt') renderer = Renderer(path, { 'report': report, }, resultat) renderer.run() docFile = open(resultat, 'rb') contingut = docFile.read() docFile.close() os.remove(resultat) #barcode os.remove(barres) # except Exception, e: # excepcio = unicode( e ) if True: #not excepcio: response = http.HttpResponse( contingut, content_type='application/vnd.oasis.opendocument.text') response[ 'Content-Disposition'] = u'attachment; filename="{0}-{1}.odt"'.format( "autoritzacio_sortida", pk) else: response = http.HttpResponse( '''Als Gremlin no els ha agradat aquest fitxer! %s''' % cgi.escape(excepcio)) return response
#!/usr/bin/env python # pip install viivakoodi import barcode from barcode.writer import ImageWriter try: import Image,ImageDraw, ImageFont except ImportError: from PIL import Image, ImageDraw, ImageFont CODE128 = barcode.get_barcode_class('code128') FONT = "FreeSans.ttf" options = { "module_width": 0.254, # 3 dots / 300 dpi * 25.4mm/in "module_height": 10.0, # The height of the barcode modules in mm "quiet_zone": 0.0, # Distance on the left and on the right from the border to the first (last) barcode module in mm as float. Defaults to 6.5. "font_size": 18 , # Font size of the text under the barcode in pt as integer. Defaults to 10. "text_distance": 0.7, # Distance between the barcode and the text under it in mm as float. Defaults to 5.0. } label_sizes = { "17x54": (566, 165), # printable area: 47.92mm x 13.97mm (566dots x 165dots in 300dpi = 135.84dots x 39.60dots in 72dpi) "17x87": (956, 165), # printable area: 80.94mm x 13.97mm (956dots x 165dots in 300dpi = 229.44dots x 39.60dots in 72dpi) "29x90": (991, 306), # printable area: 83.90mm x 25.91mm (991dots x 306dots in 300dpi = 237.84dots x 73.44dots in 72dpi) } pt300 = 0.24 # (pt300 = 0.24 pt72) def create_label_type1(label_size, barcode_value, line1=None, line2=None, line3=None): im = Image.new("L", label_sizes[label_size], 255)
# install package # type pip install python-barcode in command prompt/terminal from barcode.writer import ImageWriter import barcode # there are many barcode types # select what you need # check it on pypi.org/project/python-barcode hr = barcode.get_barcode_class('ean13') Hr = hr('0234564257425') # svg file will be created using ean13 qr = Hr.save('barcode') # image file or png file # import pillow library to use code39 gr = barcode.get_barcode_class('code39', ) Gr = gr('1234567891011', writer=ImageWriter()) qr = Gr.save('pngbarcode')
def make_barcode(): UPC = barcode.get_barcode_class('upc') upc = UPC(pk, writer=ImageWriter()) code = upc.save('upc_code') return code
try: os.mkdir(TESTPATH) except OSError, e: print('Test not run.') print('Error:', e) sys.exit(1) objects = [] append = lambda x, y: objects.append(OBJECTS.format(filename=x, name=y)) append_img = lambda x, y: objects.append(IMAGES.format(filename=x, name=y)) for codename, code in TESTCODES: bcode = get_barcode(codename, code) filename = bcode.save(os.path.join(TESTPATH, codename)) print('Code: ', bcode.name, ', digits: ', bcode.digits) append(filename, bcode.name) if ImageWriter is not None: bcodec = get_barcode_class(codename) bcode = bcodec(code, writer=ImageWriter()) filename = bcode.save(os.path.join(TESTPATH, codename), font_size=14, text_distance=1) append_img(filename, bcode.name) else: objects.append(NO_PIL) # Save htmlfile with all objects with codecs.open(HTMLFILE, 'w', encoding='utf-8') as f: obj = '\n'.join(objects) f.write(HTML.format(version=__version__, body=obj)) if __name__ == '__main__': test() webbrowser.open(HTMLFILE)
def press1(button): try: with open("ACEconfig.json", "r") as ACEconfigFile: ACE = json.load(ACEconfigFile) with open("ACIconfig.json", "r") as ACIconfigFile: ACI = json.load(ACIconfigFile) start = app.getDatePicker("startDP") end = app.getDatePicker("endDP") delta = (end - start).days + 1 for i in range(0, delta): # For each day between the start and end dates day = datetime.date.fromordinal(start.toordinal() + i) YYYYMMDD = str(day).replace("-", "") if day.weekday() < 5: # If the day is not Saturday or Sunday SCAC = "SEIK" + YYYYMMDD + "DR" ACE["tripNumber"] = SCAC ACE["estimatedArrivalDateTime"] = str(day) + " 10:00:00" CCN = "726G" + YYYYMMDD + "DR" PARS = CCN + "02" ACI["tripNumber"] = CCN ACI["estimatedArrivalDateTime"] = str(day) + " 12:00:00" ACI["shipments"][0]["cargoControlNumber"] = PARS ACI["shipments"][0]["estimatedArrivalDate"] = str( day) + " 12:00:00" if app.getCheckBox("Save .json(s) to disk"): path = "ACE-ACI Manifests" + os.sep + YYYYMMDD if not os.path.exists("ACE-ACI Manifests"): os.mkdir("ACE-ACI Manifests") if not os.path.exists(path): os.mkdir(path) with open(path + os.sep + "ace-trip-" + SCAC + ".json", "w") as outFile: json.dump(ACE, outFile) with open(path + os.sep + "aci-trip-" + CCN + ".json", "w") as outFile: json.dump(ACI, outFile) if app.getCheckBox("Send .json(s) to BorderConnect"): sendToBC(ACE) sendToBC(ACI) if app.getCheckBox("Request .pdf(s) from BorderConnect"): ACERequest = { "data": "PDF_REQUEST", "companyKey": "c-9000-2bcd8ae5954e0c48", "type": "ACE_STANDARD_DRIVERS_COPY", "action": "EMAIL", "tripNumber": SCAC, "emailDetails": { "address": "*****@*****.**", "replyToAddress": "*****@*****.**", "subject": "ACE eManifest Trip Number " + SCAC, "body": str(day) } } sendToBC(ACERequest) ACIRequest = { "data": "PDF_REQUEST", "companyKey": "c-9000-2bcd8ae5954e0c48", "type": "ACI_STANDARD_DRIVERS_COPY", "action": "EMAIL", "tripNumber": CCN, "emailDetails": { "address": "*****@*****.**", "replyToAddress": "*****@*****.**", "subject": "ACI eManifest Trip Number " + CCN, "body": str(day) } } sendToBC(ACIRequest) if app.getCheckBox("Generate .pdf(s)"): path = "ACE-ACI Manifests" + os.sep + YYYYMMDD if not os.path.exists("ACE-ACI Manifests"): os.mkdir("ACE-ACI Manifests") if not os.path.exists(path): os.mkdir(path) CODE128 = barcode.get_barcode_class("code128") #ACE Manifest text = [] text.append("ACE Manifest") text.append(" ") text.append("Company: Stallion Express Inc.") text.append("Trip Number: " + SCAC) text.append(" ") text.append(" ") text.append(" ") # Empty room for barcodes text.append(" ") text.append(" ") text.append(" ") text.append(" ") text.append(" ") text.append(" *" + SCAC + "*") text.append(" ") text.append("Driver Name: " + ACE["drivers"][0]["firstName"] + " " + ACE["drivers"][0]["lastName"]) text.append( "Truck License Plate: " + ACE["truck"]["licensePlates"][0]["number"] + " (" + ACE["truck"]["licensePlates"][0]["stateProvince"] + ", CA)") text.append( "Trailer License Plate: " + ACE["trailers"][0]["licensePlates"][0]["number"] + " (" + ACE["trailers"][0]["licensePlates"][0] ["stateProvince"] + ", CA)") bar = CODE128(SCAC, writer=ImageWriter()) if os.path.exists(path + os.sep + SCAC): os.remove(path + os.sep + SCAC) file = bar.save(path + os.sep + SCAC) c = canvas.Canvas(path + os.sep + SCAC + ".pdf", bottomup=0) c.setFont("Lucida", 20) c.drawImage(file, 20, 120, width=227, height=140, mask=None) for i, line in enumerate(text): c.drawString(20, 40 + (i * 22), line) if os.path.exists(path + os.sep + SCAC + ".pdf"): os.remove(path + os.sep + SCAC + ".pdf") c.save() # ACI Manifest text = [] text.append("ACI Manifest for Canada") text.append(" ") text.append("Company: Stallion Express Inc.") text.append("Conveyance Reference Number: " + CCN) text.append(" ") text.append(" ") text.append(" ") # Empty room for barcodes text.append(" ") text.append(" ") text.append(" ") text.append(" ") text.append(" ") text.append(" *" + CCN + "*") text.append(" ") text.append("Port of Entry: 0427: Niagara Falls") text.append(" - Queenston Lewiston Bridge" ) # TODO: un-hardcode this text.append("Driver Name: " + ACI["drivers"][0]["firstName"] + " " + ACI["drivers"][0]["lastName"]) text.append("Truck License Plate: " + ACI["truck"]["licensePlate"]["number"] + " (" + ACI["truck"]["licensePlate"]["stateProvince"] + ", CA)") text.append( "Trailer License Plate: " + ACI["trailers"][0]["licensePlate"]["number"] + " (" + ACI["trailers"][0]["licensePlate"]["stateProvince"] + ", CA)") text.append("Cargo Control Number(s): " + PARS) text.append(" Type: PARS") bar = CODE128(CCN, writer=ImageWriter()) if os.path.exists(path + os.sep + CCN): os.remove(path + os.sep + CCN) file = bar.save(path + os.sep + CCN) c = canvas.Canvas(path + os.sep + CCN + ".pdf", bottomup=0) c.setFont("Lucida", 20) c.drawImage(file, 20, 120, width=227, height=140, mask=None) for i, line in enumerate(text): c.drawString(20, 40 + (i * 22), line) if os.path.exists(path + os.sep + CCN + ".pdf"): os.remove(path + os.sep + CCN + ".pdf") c.save() if app.getCheckBox("Email .pdf(s) to Driver"): path = "ACE-ACI Manifests" + os.sep + YYYYMMDD if os.path.exists( path + os.sep + SCAC + ".pdf" ) and os.path.exists( path + os.sep + CCN + ".pdf" ): # IF both necessary files are present, send an email server = smtplib.SMTP(host="smtp.gmail.com", port=587) server.starttls() server.login("*****@*****.**", password) message = MIMEMultipart() text = "" message["From"] = "*****@*****.**" message["To"] = "*****@*****.**" message["Subject"] = "Paperwork for " + str(day) message.attach(MIMEText(text, "plain")) files = [ path + os.sep + SCAC + ".pdf", path + os.sep + CCN + ".pdf" ] for f in files: attachment = MIMEApplication(open(f, "rb").read()) attachment.add_header("Content-Disposition", "attachment", filename=f) message.attach(attachment) server.send_message(message) print("Email Sent") del message else: print("Ford BoL or ACI not found") if app.getCheckBox("Backup to Google Drive"): pass # TODO: Backup to Google Drive? except: print(sys.exc_info()) raise
def get_barcode(): barcode.PROVIDED_BARCODES EAN = barcode.get_barcode_class('ean13') m = str(int(round(time.time() * 1000))) ean = EAN(m) return ean