shriarul5273 commited on
Commit
a73fb0d
·
verified ·
1 Parent(s): e64363d

updated the app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -10
app.py CHANGED
@@ -7,8 +7,8 @@ import atexit
7
  def merge_pdfs(pdf_files, order):
8
  pdf_writer = PdfWriter()
9
 
10
- # Sort the PDF files based on the specified order
11
- sorted_pdfs = [pdf for _, pdf in sorted(zip(order, pdf_files))]
12
 
13
  # Read and add each PDF file to the writer in the specified order
14
  for pdf in sorted_pdfs:
@@ -16,10 +16,10 @@ def merge_pdfs(pdf_files, order):
16
  for page in pdf_reader.pages:
17
  pdf_writer.add_page(page)
18
 
19
- # Create a temporary file for the merged PDF
20
- with tempfile.NamedTemporaryFile(delete=False, suffix='.pdf') as temp_file:
 
21
  pdf_writer.write(temp_file)
22
- temp_file_path = temp_file.name
23
 
24
  return temp_file_path
25
 
@@ -27,20 +27,29 @@ def merge_pdfs(pdf_files, order):
27
  with gr.Blocks() as demo:
28
  gr.Markdown("# PDF Merger and Viewer")
29
  pdf_input = gr.File(label="Upload PDF Files to Merge", file_types=[".pdf"], file_count="multiple")
30
- order_input = gr.Textbox(label="Enter the order of PDFs (comma-separated numbers, e.g., 2,1,3)", placeholder="1,2,3,...")
31
  merge_button = gr.Button("Merge PDFs")
32
  merged_result = gr.File(label="Download Merged PDF")
33
 
34
  # Set button action to merge PDFs and then display the first page
35
  def merge_and_preview(pdf_files, order):
 
 
36
  if not order:
37
- order = list(range(1, len(pdf_files) + 1))
 
38
  else:
39
- order = [int(x.strip()) for x in order.split(',')]
 
 
 
 
40
 
41
- if len(order) != len(pdf_files):
42
- return gr.Error("The number of order values must match the number of uploaded PDFs.")
 
43
 
 
44
  merged_pdf_path = merge_pdfs(pdf_files, order)
45
  return merged_pdf_path
46
 
 
7
  def merge_pdfs(pdf_files, order):
8
  pdf_writer = PdfWriter()
9
 
10
+ # Sort the PDF files based on the specified order, skipping files marked with '0'
11
+ sorted_pdfs = [pdf_files[i-1] for i in order if i != 0]
12
 
13
  # Read and add each PDF file to the writer in the specified order
14
  for pdf in sorted_pdfs:
 
16
  for page in pdf_reader.pages:
17
  pdf_writer.add_page(page)
18
 
19
+ # Create a named temporary file for the merged PDF as 'combine.pdf'
20
+ temp_file_path = os.path.join(tempfile.gettempdir(), "combine.pdf")
21
+ with open(temp_file_path, 'wb') as temp_file:
22
  pdf_writer.write(temp_file)
 
23
 
24
  return temp_file_path
25
 
 
27
  with gr.Blocks() as demo:
28
  gr.Markdown("# PDF Merger and Viewer")
29
  pdf_input = gr.File(label="Upload PDF Files to Merge", file_types=[".pdf"], file_count="multiple")
30
+ order_input = gr.Textbox(label="Enter the order of PDFs as comma-separated numbers, skip the number if you want to skip the file", placeholder="1,2,3,... or 3,1,2")
31
  merge_button = gr.Button("Merge PDFs")
32
  merged_result = gr.File(label="Download Merged PDF")
33
 
34
  # Set button action to merge PDFs and then display the first page
35
  def merge_and_preview(pdf_files, order):
36
+ n = len(pdf_files)
37
+
38
  if not order:
39
+ # Default to natural order if order is empty
40
+ order = list(range(1, n + 1))
41
  else:
42
+ try:
43
+ # Convert the input string to a list of integers
44
+ order = [int(x.strip()) for x in order.split(',')]
45
+ except ValueError:
46
+ return gr.Error("Invalid order format. Ensure it is comma-separated numbers.")
47
 
48
+ # Ensure the order does not reference non-existing files
49
+ if any(i < 0 or i > n for i in order):
50
+ return gr.Error(f"Order values must be between 0 and {n} (0 means to skip the file).")
51
 
52
+ # Adjust order by removing '0' entries and merging only the specified files
53
  merged_pdf_path = merge_pdfs(pdf_files, order)
54
  return merged_pdf_path
55