Preeeeet commited on
Commit
59c254c
·
verified ·
1 Parent(s): 9f18e13

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -29
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.documents
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.documents
36
 
37
  def rearrange_pages(self, order):
38
  self.pages = [self.pages[i] for i in order]
39
- return self.pages
40
 
41
  def delete_page(self, index):
42
  if 0 <= index < len(self.pages):
43
  del self.pages[index]
44
- return self.pages
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.pages
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
- rearrange_order = gr.Textbox(label="Rearrange Pages (comma-separated indices)")
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
- file_upload.upload(upload_files, inputs=file_upload, outputs=[])
109
- delete_index.submit(delete_page, inputs=delete_index, outputs=[])
110
- blank_button.click(add_blank_page, outputs=[])
111
- rearrange_order.submit(rearrange_pages, inputs=rearrange_order, outputs=[])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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()