Spaces:
Sleeping
Sleeping
updated the app.py
Browse files
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 = [
|
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 |
-
|
|
|
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
|
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
|
|
|
38 |
else:
|
39 |
-
|
|
|
|
|
|
|
|
|
40 |
|
41 |
-
|
42 |
-
|
|
|
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 |
|