gokulan006 commited on
Commit
b0d6f4f
·
verified ·
1 Parent(s): bd71dc9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -0
app.py CHANGED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from PyPDF2 import PdfReader, PdfWriter
3
+ import os
4
+
5
+ def split_pdf(file_path, start_page, end_page):
6
+
7
+ reader = PdfReader(file_path)
8
+ num_pages = len(reader.pages)
9
+
10
+ # Validate page range
11
+ if start_page < 1 or end_page > num_pages or start_page > end_page:
12
+
13
+ raise ValueError(f"Invalid page range: 1–{num_pages} allowed.")
14
+
15
+ writer = PdfWriter()
16
+
17
+ # Convert to 0-based for PyPDF2
18
+ for i in range(int(start_page) - 1, int(end_page)):
19
+ writer.add_page(reader.pages[i])
20
+
21
+
22
+ base_dir = os.path.dirname(file_path)
23
+ base_name = os.path.splitext(os.path.basename(file_path))[0]
24
+ output_path = os.path.join(
25
+ base_dir,
26
+ f"{base_name}_pages_{int(start_page)}_{int(end_page)}.pdf"
27
+ )
28
+
29
+ with open(output_path, "wb") as output_pdf:
30
+ writer.write(output_pdf)
31
+
32
+
33
+ return output_path
34
+
35
+ # Gradio interface
36
+ iface = gr.Interface(
37
+ fn=split_pdf,
38
+ inputs=[
39
+ gr.File(label="Upload PDF", type="filepath"),
40
+ gr.Number(label="Start Page", value=1, precision=0),
41
+ gr.Number(label="End Page", value=1, precision=0),
42
+ ],
43
+ outputs=gr.File(label="Download Split PDF"),
44
+ title="PDF Splitter",
45
+ description="Upload a PDF and specify the start and end pages to split."
46
+ )
47
+
48
+
49
+ if __name__ == "__main__":
50
+ iface.launch()