File size: 827 Bytes
1ad3e81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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}"})