from PyPDF2 import PdfReader, PdfWriter
import os

file = "OWASP-Top-10-for-LLMs-2023-v05.pdf"
pdf_reader = PdfReader(file)
output_folder = "output"

os.makedirs(output_folder, exist_ok=True)

for page_num, page in enumerate(pdf_reader.pages):
    output_file = f"{output_folder}/page_{page_num+1}.pdf"
    pdf_writer = PdfWriter()
    pdf_writer.add_page(page)
    
    with open(output_file, "wb") as output:
        pdf_writer.write(output)
import streamlit as st
from PyPDF2 import PdfReader, PdfWriter
import os
import zipfile
from io import BytesIO

def split_pdf_to_pages(file):
    pdf_reader = PdfReader(file)
    output_folder = "output"
    os.makedirs(output_folder, exist_ok=True)

    for page_num, page in enumerate(pdf_reader.pages):
        output_file = f"{output_folder}/page_{page_num+1}.pdf"
        pdf_writer = PdfWriter()
        pdf_writer.add_page(page)
        
        with open(output_file, "wb") as output:
            pdf_writer.write(output)

    return output_folder

def create_zip_archive(folder):
    zip_filename = "output.zip"
    zipf = zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED)
    
    for root, _, files in os.walk(folder):
        for file in files:
            zipf.write(os.path.join(root, file), arcname=file)
    
    zipf.close()
    
    return zip_filename

st.title("PDF Split and Zip")

uploaded_file = st.file_uploader("Upload a PDF file", type="pdf")

if uploaded_file is not None:
    folder_path = split_pdf_to_pages(BytesIO(uploaded_file.read()))
    zip_filename = create_zip_archive(folder_path)
    file_path = "output.zip"
    if os.path.isfile(file_path):
        with open(file_path, "rb") as file:
            # 다운로드 버튼 클릭 시 브라우저에 파일 다운로드를 알리는 헤더 정보
            st.header("Downloading output.zip...")
            st.download_button(label="Click here to download", data=file, file_name="output.zip", mime="application/zip")
    else:
        st.error("File not found.")