Update app.py
Browse files
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 |
-
|
| 108 |
with gr.TabItem("Merge PDF"):
|
| 109 |
-
files = gr.Files(label="Upload
|
| 110 |
-
|
|
|
|
| 111 |
|
| 112 |
-
def
|
| 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 |
-
|
| 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
|
| 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 |
-
|
| 138 |
-
|
| 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)))
|