Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -18,7 +18,7 @@ class MultiDocMerger:
|
|
| 18 |
f.write(file.read())
|
| 19 |
self.documents.append(file_path)
|
| 20 |
self._extract_pages(file_path)
|
| 21 |
-
return self.
|
| 22 |
|
| 23 |
def _extract_pages(self, file_path):
|
| 24 |
reader = PdfReader(file_path)
|
|
@@ -32,16 +32,16 @@ class MultiDocMerger:
|
|
| 32 |
|
| 33 |
def rearrange_documents(self, order):
|
| 34 |
self.documents = [self.documents[i] for i in order]
|
| 35 |
-
return self.
|
| 36 |
|
| 37 |
def rearrange_pages(self, order):
|
| 38 |
self.pages = [self.pages[i] for i in order]
|
| 39 |
-
return self.
|
| 40 |
|
| 41 |
def delete_page(self, index):
|
| 42 |
if 0 <= index < len(self.pages):
|
| 43 |
del self.pages[index]
|
| 44 |
-
return self.
|
| 45 |
|
| 46 |
def add_blank_page(self):
|
| 47 |
blank_path = os.path.join(self.temp_dir, f"blank_{len(self.pages)}.pdf")
|
|
@@ -49,7 +49,7 @@ class MultiDocMerger:
|
|
| 49 |
can.showPage()
|
| 50 |
can.save()
|
| 51 |
self.pages.append(blank_path)
|
| 52 |
-
return self.
|
| 53 |
|
| 54 |
def generate_index(self):
|
| 55 |
index_content = "Index Page\n\n"
|
|
@@ -72,43 +72,46 @@ class MultiDocMerger:
|
|
| 72 |
output.write(f)
|
| 73 |
return output_path
|
| 74 |
|
|
|
|
|
|
|
|
|
|
| 75 |
def cleanup(self):
|
| 76 |
shutil.rmtree(self.temp_dir)
|
| 77 |
|
| 78 |
merger = MultiDocMerger()
|
| 79 |
|
| 80 |
-
def upload_files(files):
|
| 81 |
-
paths = []
|
| 82 |
-
for file in files:
|
| 83 |
-
paths = merger.add_document(file)
|
| 84 |
-
return paths
|
| 85 |
-
|
| 86 |
-
def merge_and_export():
|
| 87 |
-
return merger.export_merged_pdf()
|
| 88 |
-
|
| 89 |
-
def delete_page(index):
|
| 90 |
-
return merger.delete_page(index)
|
| 91 |
-
|
| 92 |
-
def add_blank_page():
|
| 93 |
-
return merger.add_blank_page()
|
| 94 |
-
|
| 95 |
-
def rearrange_pages(order):
|
| 96 |
-
return merger.rearrange_pages(order)
|
| 97 |
-
|
| 98 |
with gr.Blocks() as demo:
|
| 99 |
gr.Markdown("# Multi-Document Merger and Organizer")
|
| 100 |
with gr.Column():
|
| 101 |
file_upload = gr.File(label="Upload Files", file_count="multiple")
|
| 102 |
-
|
| 103 |
delete_index = gr.Number(label="Delete Page Index")
|
| 104 |
blank_button = gr.Button("Add Blank Page")
|
| 105 |
merge_button = gr.Button("Merge and Export PDF")
|
| 106 |
output_file = gr.File()
|
| 107 |
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
merge_button.click(merge_and_export, outputs=output_file)
|
| 113 |
|
| 114 |
-
demo.launch()
|
|
|
|
| 18 |
f.write(file.read())
|
| 19 |
self.documents.append(file_path)
|
| 20 |
self._extract_pages(file_path)
|
| 21 |
+
return self._generate_preview()
|
| 22 |
|
| 23 |
def _extract_pages(self, file_path):
|
| 24 |
reader = PdfReader(file_path)
|
|
|
|
| 32 |
|
| 33 |
def rearrange_documents(self, order):
|
| 34 |
self.documents = [self.documents[i] for i in order]
|
| 35 |
+
return self._generate_preview()
|
| 36 |
|
| 37 |
def rearrange_pages(self, order):
|
| 38 |
self.pages = [self.pages[i] for i in order]
|
| 39 |
+
return self._generate_preview()
|
| 40 |
|
| 41 |
def delete_page(self, index):
|
| 42 |
if 0 <= index < len(self.pages):
|
| 43 |
del self.pages[index]
|
| 44 |
+
return self._generate_preview()
|
| 45 |
|
| 46 |
def add_blank_page(self):
|
| 47 |
blank_path = os.path.join(self.temp_dir, f"blank_{len(self.pages)}.pdf")
|
|
|
|
| 49 |
can.showPage()
|
| 50 |
can.save()
|
| 51 |
self.pages.append(blank_path)
|
| 52 |
+
return self._generate_preview()
|
| 53 |
|
| 54 |
def generate_index(self):
|
| 55 |
index_content = "Index Page\n\n"
|
|
|
|
| 72 |
output.write(f)
|
| 73 |
return output_path
|
| 74 |
|
| 75 |
+
def _generate_preview(self):
|
| 76 |
+
return [os.path.basename(page) for page in self.pages]
|
| 77 |
+
|
| 78 |
def cleanup(self):
|
| 79 |
shutil.rmtree(self.temp_dir)
|
| 80 |
|
| 81 |
merger = MultiDocMerger()
|
| 82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 83 |
with gr.Blocks() as demo:
|
| 84 |
gr.Markdown("# Multi-Document Merger and Organizer")
|
| 85 |
with gr.Column():
|
| 86 |
file_upload = gr.File(label="Upload Files", file_count="multiple")
|
| 87 |
+
preview_gallery = gr.Gallery(label="Document Preview and Reordering", interactive=True)
|
| 88 |
delete_index = gr.Number(label="Delete Page Index")
|
| 89 |
blank_button = gr.Button("Add Blank Page")
|
| 90 |
merge_button = gr.Button("Merge and Export PDF")
|
| 91 |
output_file = gr.File()
|
| 92 |
|
| 93 |
+
def upload_files(files):
|
| 94 |
+
paths = []
|
| 95 |
+
for file in files:
|
| 96 |
+
paths = merger.add_document(file)
|
| 97 |
+
return paths
|
| 98 |
+
|
| 99 |
+
def merge_and_export():
|
| 100 |
+
return merger.export_merged_pdf()
|
| 101 |
+
|
| 102 |
+
def delete_page(index):
|
| 103 |
+
return merger.delete_page(index)
|
| 104 |
+
|
| 105 |
+
def add_blank_page():
|
| 106 |
+
return merger.add_blank_page()
|
| 107 |
+
|
| 108 |
+
def reorder_pages(order):
|
| 109 |
+
return merger.rearrange_pages(order)
|
| 110 |
+
|
| 111 |
+
file_upload.upload(upload_files, inputs=file_upload, outputs=preview_gallery)
|
| 112 |
+
delete_index.submit(delete_page, inputs=delete_index, outputs=preview_gallery)
|
| 113 |
+
blank_button.click(add_blank_page, outputs=preview_gallery)
|
| 114 |
+
preview_gallery.change(reorder_pages, inputs=preview_gallery, outputs=preview_gallery)
|
| 115 |
merge_button.click(merge_and_export, outputs=output_file)
|
| 116 |
|
| 117 |
+
demo.launch()
|