Files
zibo-dashboard/python-cad-area/app.py
T
2026-06-11 09:02:22 +02:00

76 lines
1.8 KiB
Python

from flask import Flask, request, jsonify
from flask_cors import CORS
import traceback
from cad_vector_area import calculate_pdf_vector_area
app = Flask(__name__)
CORS(app)
@app.route("/health", methods=["GET"])
def health():
return jsonify({
"success": True,
"message": "Python CAD Area service is running"
})
@app.route("/calculate", methods=["POST"])
def calculate():
try:
if "file" not in request.files:
return jsonify({
"success": False,
"message": "No PDF file received"
}), 400
uploaded_file = request.files["file"]
if uploaded_file.filename == "":
return jsonify({
"success": False,
"message": "Empty filename"
}), 400
if not uploaded_file.filename.lower().endswith(".pdf"):
return jsonify({
"success": False,
"message": "Only PDF files are allowed"
}), 400
pdf_bytes = uploaded_file.read()
scale_ratio = request.form.get("scale_ratio", "1")
try:
scale_ratio = float(scale_ratio)
if scale_ratio <= 0:
scale_ratio = 1.0
except ValueError:
scale_ratio = 1.0
result = calculate_pdf_vector_area(
pdf_bytes=pdf_bytes,
filename=uploaded_file.filename,
scale_ratio=scale_ratio
)
status_code = 200 if result.get("success") else 422
return jsonify(result), status_code
except Exception as e:
return jsonify({
"success": False,
"message": str(e),
"trace": traceback.format_exc()
}), 500
if __name__ == "__main__":
app.run(
host="127.0.0.1",
port=5055,
debug=True
)