File size: 1,696 Bytes
9f2140e
645eb49
06dd81d
 
abf3a3c
 
 
 
 
 
fb2826f
 
 
4a1eeb0
789a1ec
62e091c
60ee365
ec874f4
60ee365
3b3819e
d844446
abf3a3c
 
 
b9e5f15
abf3a3c
fb2826f
645eb49
f4c2ee1
844f0f4
f136ca9
9f2140e
4a1eeb0
6ff817f
76443b7
d39bc85
b23b1d8
 
 
e334184
3a9de65
06dd81d
b211267
f4c2ee1
cf36b8d
b23b1d8
645eb49
dde7f29
2dce97e
f4c2ee1
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from fastapi import FastAPI,Request
from fastapi.templating import Jinja2Templates
from fastapi.responses import HTMLResponse,Response
import os,io,base64 as b64
from pdf2image import convert_from_path, convert_from_bytes
from pdf2image.exceptions import (
    PDFInfoNotInstalledError,
    PDFPageCountError,
    PDFSyntaxError
)
class BaseImage:
    img:str=None
    
def format(codigo:str,size:float):
   return f"""\\documentclass[12pt]{{article}}
\\usepackage[fontsize={size}pt]{{fontsize}}
\\begin{{document}}
{codigo}
\\end{{document}}"""
from subprocess import run
app=FastAPI();
def get_bytes_value(image):
    img_byte_arr = io.BytesIO()
    image.save(img_byte_arr, format='JPEG')
    img_byte_arr.seek(0)
    return img_byte_arr.getvalue()
imags=BaseImage()
templates = Jinja2Templates(directory="templates")
@app.get("/image",response_class=Response)
def img(request: Request):
    return Response(content=b64.b64decode(imags.img),media_type="image/jpeg") if imags.img else "No image"
@app.get("/",response_class=HTMLResponse)
def test(request: Request,q:str="ls",body:bool=True,x:int=1024,y:int=1024,font:float=50):
    with open("./v.tex","w") as k:
        k.write(format(q,font) if body else q)
    r=run("pdflatex v.tex".split(" "),capture_output=True)
    if r.stderr:
        return r.stderr
    else:
        
        images=convert_from_path("v.pdf",size=(x,y))
        images[0].save("v.jpg",format="JPEG")
        with open("v.jpg","rb") as t:
            v=b64.b64encode(t.read()).decode('UTF-8')
        imags.img=v
        return templates.TemplateResponse("latex.html", 
          {
            "q":q,
            "request":request,
            "result":v
          })