plozia commited on
Commit
8aa8613
·
verified ·
1 Parent(s): 61881cd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -25
app.py CHANGED
@@ -100,44 +100,35 @@ with gr.Blocks(css=custom_css) as demo:
100
  with gr.TabItem("Split PDF"):
101
  inp = gr.File(label="PDF")
102
  ranges = gr.Textbox(label="Page ranges", placeholder="e.g. 1-3,6-8")
103
- btn = gr.Button("Split")
104
- out, err = gr.File(), gr.Textbox(visible=False)
105
- btn.click(lambda f,r: (*split_pdf(f,r),), [inp,ranges],[out,err,err])
106
 
107
- # Merge
108
  with gr.TabItem("Merge PDF"):
109
- files = gr.Files(label="Upload PDFs to merge (max 1 GB each)")
110
- reorder = gr.Sortable([], label="Drag to reorder files by filename")
 
111
 
112
- def update_reorder(file_list):
113
- return [os.path.basename(f.name) for f in file_list] if file_list else []
114
- files.change(update_reorder, inputs=files, outputs=reorder)
115
-
116
- btn_m = gr.Button("Merge PDFs", variant="primary")
117
- out_m = gr.File(label="Download Merged PDF")
118
- err_m = gr.Textbox(label="Error", interactive=False, visible=False)
119
-
120
- def run_merge(file_list, order_list):
121
  if not file_list or len(file_list) < 2:
122
  return None, "Please upload at least two PDFs.", True
123
- name_to_file = {os.path.basename(f.name): f for f in file_list}
124
- ordered_files = [name_to_file[name] for name in order_list if name in name_to_file]
125
- out, err = merge_pdfs(ordered_files)
126
  return out, err, err is not None
127
 
128
- btn_m.click(run_merge, [files, reorder], [out_m, err_m, err_m])
129
 
130
  # Compress
131
  with gr.TabItem("Compress PDF"):
132
  comp_file = gr.File(label="PDF to compress")
133
  method = gr.Radio(choices=["Stream only","PikePDF"], value="PikePDF", label="Method")
134
  quality = gr.Slider(10,100, value=75, step=5, label="JPEG Quality")
135
- btn_c = gr.Button("Compress")
136
- out_c, err_c = gr.File(), gr.Textbox(visible=False)
137
- def do_compress(f,m,q):
138
- if m=="PikePDF": return compress_pdf_pike(f,q)
139
- return compress_pdf_stream(f)
140
- btn_c.click(do_compress, [comp_file,method,quality], [out_c,err_c,err_c])
141
 
142
  if __name__ == "__main__":
143
  demo.launch(server_name="0.0.0.0", server_port=int(os.environ.get("PORT",7860)))
 
 
 
100
  with gr.TabItem("Split PDF"):
101
  inp = gr.File(label="PDF")
102
  ranges = gr.Textbox(label="Page ranges", placeholder="e.g. 1-3,6-8")
103
+ btn = gr.Button("Split PDF")
104
+ out, err = gr.File(label="Download Split PDF"), gr.Textbox(label="Error", visible=False)
105
+ btn.click(lambda f,r: (*split_pdf(f,r),), [inp,ranges], [out,err,err])
106
 
107
+ # Merge
108
  with gr.TabItem("Merge PDF"):
109
+ files = gr.Files(label="Upload & reorder PDFs (drag to reorder)")
110
+ btn_m = gr.Button("Merge PDFs")
111
+ out_m, err_m = gr.File(label="Download Merged PDF"), gr.Textbox(label="Error", visible=False)
112
 
113
+ def run_merge(file_list):
 
 
 
 
 
 
 
 
114
  if not file_list or len(file_list) < 2:
115
  return None, "Please upload at least two PDFs.", True
116
+ out, err = merge_pdfs(file_list)
 
 
117
  return out, err, err is not None
118
 
119
+ btn_m.click(run_merge, inputs=[files], outputs=[out_m, err_m, err_m])
120
 
121
  # Compress
122
  with gr.TabItem("Compress PDF"):
123
  comp_file = gr.File(label="PDF to compress")
124
  method = gr.Radio(choices=["Stream only","PikePDF"], value="PikePDF", label="Method")
125
  quality = gr.Slider(10,100, value=75, step=5, label="JPEG Quality")
126
+ btn_c = gr.Button("Compress PDF")
127
+ out_c, err_c = gr.File(label="Download Compressed PDF"), gr.Textbox(label="Error", visible=False)
128
+ btn_c.click(lambda f,m,q: compress_pdf_pike(f,q) if m=="PikePDF" else compress_pdf_stream(f),
129
+ inputs=[comp_file,method,quality], outputs=[out_c,err_c,err_c])
 
 
130
 
131
  if __name__ == "__main__":
132
  demo.launch(server_name="0.0.0.0", server_port=int(os.environ.get("PORT",7860)))
133
+ == "__main__":
134
+ demo.launch(server_name="0.0.0.0", server_port=int(os.environ.get("PORT",7860)))