#encoding from app import app from flask import request, redirect, url_for, send_from_directory, render_template import subprocess import redis import random import PyPDF2 import json import os import json import re import base64 #https://medium.com/@emerico/convert-pdf-to-image-using-python-flask-2864fb655e01 UPLOAD_FOLDER = "/home/bscheibel/app/app/temporary" app.config["UPLOAD_FOLDER"] = UPLOAD_FOLDER ALLOWED_EXTENSIONS = set(['pdf', 'png', 'jpg', 'jpeg', 'PDF']) def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS def convert_pdf_img(filename): PDFFILE = UPLOAD_FOLDER +"/" + filename subprocess.call(['pdftoppm', '-jpeg', '-singlefile', PDFFILE, '/home/bscheibel//app/app/temporary/out']) def extract_all(uuid, filename, db): #order_bounding_boxes_in_each_block.main(uuid, UPLOAD_FOLDER + "/" + filename) subprocess.call(['python3','/home/bscheibel/PycharmProjects/dxf_reader/main.py', str(uuid),UPLOAD_FOLDER + "/" + filename, db, str(0)]) def get_file_size(file): pdf = PyPDF2.PdfFileReader(file) p = pdf.getPage(0) w = p.mediaBox.getWidth() h= p.mediaBox.getHeight() print(w,h) return w,h def check_links(isos): link_names = {} for name in isos: try: name = name.replace(" ", "") url1 = name + ".PDF" #print(url) file = send_from_directory("static/isos",url1) url = "isos/" + url1 #link_names.append(url) link_names[url1] = url print(link_names) except: print("Sorry file not found") return link_names @app.route('/', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': file = request.files['file'] if file and allowed_file(file.filename): filename = file.filename basedir = os.path.abspath(os.path.dirname(__file__)) file.save(os.path.join(basedir,app.config["UPLOAD_FOLDER"], filename)) uuid = random.randint(100,10000000) extract_all(uuid, filename, 'localhost') return redirect(url_for('uploaded_file', filename=filename, uuid=uuid)) return ''' Upload new File

Upload new File

''' @app.route('/show/&') def uploaded_file(filename, uuid): file_out = "out.jpg" #file_out = filename #if request.method == 'POST': # uuid = 433 if filename.endswith(".pdf") or filename.endswith(".PDF"): w,h = get_file_size(UPLOAD_FOLDER +"/" + filename) convert_pdf_img(filename) db = redis.Redis("localhost") #isos = db.get(uuid+"dims") #print(iso) isos = json.loads(db.get(str(uuid)+"isos")) links = check_links(isos) dims = json.loads(db.get(str(uuid)+"dims")) details = json.loads(db.get(str(uuid) + "details")) number_blocks = db.get(str(uuid)+"eps") html_code = "" reg = r"(-?\d{1,}\.?\d*)" for dim in dims: print(dim) for det in details: print(det) try: if dim == det: det_coords = details[det] det_coords = ",".join(str(det) for det in det_coords) except: det_coords = "0" html_code += "

" + dim + "

" for d in dims[dim]: try: number = re.search(reg, d) number = number.group(1) try: floats = len(number.split(".")[1]) if floats <= 1: steps = 0.1 elif floats == 2: steps = 0.01 elif floats == 3: steps = 0.001 else: steps = 0.001 except: steps = 0.1 except: number = d steps = 0.1 coords = ",".join(str(e) for e in dims[dim][d]) html_code += " " + \ "" + d + "" + \ " " for x in relevant_isos: html_code += " "+ x.partition(".")[0] +" " #print(html_code) return render_template('show_image_old_working.html', filename=file_out, isos=isos, dims=dims, text=html_code, number=number_blocks, og_filename=filename, w=w, h=h, links=links) else: filename = filename return render_template('show_image.html', filename=filename) @app.route('/uploads/') def send_file(filename): return send_from_directory(UPLOAD_FOLDER, filename) # No caching at all for API endpoints. @app.after_request def add_header(response): # response.cache_control.no_store = True response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0' response.headers['Pragma'] = 'no-cache' response.headers['Expires'] = '-1' response.headers['Access-Control-Allow-Origin'] = '*' response.headers.add("Access-Control-Allow-Headers", "*") response.headers.add("Access-Control-Allow-Methods", "*") return response @app.route('/redis/get/',methods=['GET']) def redis_get(key): db = redis.Redis("localhost") result = json.loads(db.get(key)) return result @app.route('/redis/set/',methods=['POST']) def redis_set(key): value = request.get_json(force=True) value = value["value"] db = redis.Redis("localhost") value_name = value[0] value_v = value[1] try: result = json.loads(db.get(key)) result[value_name] = value_v json_res = json.dumps(result) db.set(key,json_res) except: dict_res = {} dict_res[value_name] = value_v json_dict = json.dumps(dict_res) db.set(key, json_dict) return "OK" @app.route('/index') def test(): return render_template('index.html')