intro_apps / app.py
SafiUllahAdam's picture
Create app.py
1ad3e81 verified
Raw History Blame Contribute Delete
827 Bytes
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}"})