Merge_PDF / app.py
naohiro701's picture
Update app.py
191aec7 verified
import gradio as gr
import PyPDF2
import os
def merge_pdfs(pdf_list, output_filename):
"""
Merge multiple PDF files into a single PDF file with a specified filename.
Parameters:
pdf_list (list): List of uploaded PDF files (file-like objects).
output_filename (str): Desired name of the output merged PDF file.
Returns:
str: Path to the merged PDF file.
"""
pdf_merger = PyPDF2.PdfMerger()
# If no extension is provided, add .pdf
if not output_filename.lower().endswith('.pdf'):
output_filename += '.pdf'
for pdf_file in pdf_list:
pdf_file_path = pdf_file.name # Get the path from the uploaded file object
pdf_merger.append(pdf_file_path)
with open(output_filename, 'wb') as output_pdf:
pdf_merger.write(output_pdf)
return output_filename
# Gradio interface
def gradio_pdf_merge(pdf_files, output_filename):
output_pdf_path = merge_pdfs(pdf_files, output_filename)
return output_pdf_path
# Create the Gradio interface
gr_interface = gr.Interface(
fn=gradio_pdf_merge, # The function to run when files are uploaded
inputs=[
gr.Files(file_types=['.pdf'], label="Upload PDF files"), # Allow multiple PDFs to be uploaded
gr.Textbox(label="Output PDF filename", placeholder="Enter the output filename (e.g., merged.pdf)") # Input for output filename
],
outputs=gr.File(label="Merged PDF") # Return the merged PDF file
)
# Launch the interface
gr_interface.launch()