intro_apps / app.py
SafiUllahAdam's picture
Create app.py
1ad3e81 verified
import os
from fastapi import FastAPI, File, UploadFile
from io import BytesIO
from PyPDF2 import PdfReader, PdfWriter
from fastapi.responses import StreamingResponse
app = FastAPI()
def compress_pdf(input_pdf: BytesIO) -> BytesIO:
reader = PdfReader(input_pdf)
writer = PdfWriter()
for page_num in range(len(reader.pages)):
writer.add_page(reader.pages[page_num])
output_pdf = BytesIO()
writer.write(output_pdf)
output_pdf.seek(0)
return output_pdf
@app.post("/compress-pdf/")
async def compress_pdf_endpoint(file: UploadFile = File(...)):
input_pdf = BytesIO(await file.read())
compressed_pdf = compress_pdf(input_pdf)
return StreamingResponse(compressed_pdf, media_type="application/pdf", headers={"Content-Disposition": f"attachment; filename={file.filename}"})