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.")