import http.server import socketserver from pdf2image import convert_from_path import sys import os import base64 from base64 import b64decode import io import cgi import json import random import codecs #from PIL import Image #from PIL import ImageDraw #from PIL import ImageFont from urllib.parse import urlparse from urllib.parse import parse_qs class MyHttpRequestHandler(http.server.SimpleHTTPRequestHandler): def do_GET(self): # Sending an '200 OK' response self.send_response(200) # Setting the header self.send_header("Content-type", "application/json") # Whenever using 'send_header', you also have to call 'end_headers' self.end_headers() # Extract query param fileName = "" #ctype, pdict = cgi.parse_header(self.headers['Content-Type']) #pdict['boundary'] = bytes(pdict['boundary'], "utf-8") #pdict['CONTENT-LENGTH'] = int(self.headers['Content-Length']) if 1: if self.headers['Content-Length'] != None: self.data_string = self.rfile.read(int(self.headers['Content-Length'])) #print(json.loads(self.data_string)) d = json.loads(self.data_string.decode("utf-8")) #print(d["base64"]) print(d["base64"]) #print(self.data_string.decode("utf-8")) fileName = d["base64"] print(fileName) fileNamev = "file.pdf" print ("saving file") #print (type(form)) try: bytesData = b64decode(fileName, validate=True) if bytesData[0:4] != b'%PDF': raise ValueError('Missing the PDF file signature') f = open(fileNamev, 'wb') f.write(bytesData) f.close() except IOError: print ("error") #return (False, "Can't create file to write, do you have permission to write?") #return (True, "Files uploaded") #print(path) print ("generating images") images = convert_from_path(fileNamev) dict = {} for i in range(len(images)): randValue = str(random.randint(9999,999999)) # Save pages as images in the pdf images[i].save(randValue+'page'+ str(i) +'.jpg', 'JPEG') print(randValue+'page'+ str(i) +'.jpg') #img = Image.open(randValue+'page'+ str(i) +'.jpg') # Call draw Method to add 2D graphics in an image #I1 = ImageDraw.Draw(img) #myFont = ImageFont.truetype('OpenSans-Bold.ttf', 40) # Add Text to an image #I1.text((28, 36), "Employee Name: Sarah, Employee Id: CF2", font=myFont, fill=(255, 0, 0)) #I1.text((28, 75), "2022-08-23 15:04:45", font=myFont, fill=(255, 0, 0)) #I1.text((28, 110), "K. M. Global Credit Private Limited", font=myFont, fill=(255, 0, 0)) # Display edited image #img.save(randValue+'page'+ str(i) +'.jpg') #img.save(randValue+'test_page'+ str(i) +'.png') with open(randValue+'page'+ str(i) +'.jpg', "rb") as image_file: encoded_string = base64.b64encode(image_file.read()) dict[randValue+'page'+ str(i) +'.jpg'] = encoded_string.decode("utf-8") if os.path.isfile(randValue+'page'+ str(i) +'.jpg'): os.remove(randValue+'page'+ str(i) +'.jpg') # Writing the HTML contents with UTF-8 print(dict) self.wfile.write(json.dumps(dict).encode()) return # Create an object of the above class handler_object = MyHttpRequestHandler PORT = 5004 my_server = socketserver.TCPServer(("", PORT), handler_object) # Star the server my_server.serve_forever()