first commit
This commit is contained in:
64
routes/pdf_routes.py
Normal file
64
routes/pdf_routes.py
Normal file
@@ -0,0 +1,64 @@
|
||||
# routes/pdf_routes.py - PDF Upload and Processing Routes
|
||||
|
||||
import json
|
||||
from flask import Blueprint, request, jsonify
|
||||
|
||||
from db import get_db
|
||||
from pdf_processor import process_pdf_to_markdown
|
||||
from auth import login_required
|
||||
|
||||
pdf_bp = Blueprint('pdf', __name__)
|
||||
|
||||
|
||||
@pdf_bp.route('/api/upload-pdf', methods=['POST'])
|
||||
@login_required
|
||||
def upload_pdf():
|
||||
"""Upload and process a PDF file."""
|
||||
if 'file' not in request.files:
|
||||
return jsonify({'error': 'No file provided'}), 400
|
||||
|
||||
pdf_file = request.files['file']
|
||||
|
||||
if not pdf_file or not pdf_file.filename:
|
||||
return jsonify({'error': 'Invalid file'}), 400
|
||||
|
||||
if not pdf_file.filename.lower().endswith('.pdf'):
|
||||
return jsonify({'error': 'File must be a PDF'}), 400
|
||||
|
||||
try:
|
||||
print(f"📄 Processing PDF: {pdf_file.filename}")
|
||||
|
||||
pdf_bytes = pdf_file.read()
|
||||
result = process_pdf_to_markdown(pdf_bytes)
|
||||
|
||||
# Save PDF document record
|
||||
db = get_db()
|
||||
cursor = db.cursor()
|
||||
|
||||
cursor.execute('''
|
||||
INSERT INTO pdf_documents (filename, page_count, metadata)
|
||||
VALUES (?, ?, ?)
|
||||
''', (
|
||||
pdf_file.filename,
|
||||
result["page_count"],
|
||||
json.dumps(result["metadata"])
|
||||
))
|
||||
db.commit()
|
||||
|
||||
doc_id = cursor.lastrowid
|
||||
|
||||
print(f"✅ PDF processed: {result['page_count']} pages, {len(result['markdown_blocks'])} blocks")
|
||||
|
||||
return jsonify({
|
||||
'success': True,
|
||||
'document_id': doc_id,
|
||||
'filename': pdf_file.filename,
|
||||
'page_count': result['page_count'],
|
||||
'metadata': result['metadata'],
|
||||
'blocks': result['markdown_blocks']
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return jsonify({'error': str(e)}), 500
|
||||
Reference in New Issue
Block a user