import gradio as gr import fitz import os def append_suffix_to_filename(filepath, suffix): directory, filename = os.path.split(filepath) filename_without_extension, extension = os.path.splitext(filename) return os.path.join(directory, filename_without_extension + suffix + extension) def remove_password(input_files, password): output_files = [] for file in input_files: output_path = append_suffix_to_filename(file.name, '_open') try: doc = fitz.open(file.name) if doc.is_encrypted: doc.authenticate(password) doc.save(output_path) print(output_path) doc.close() output_files.append(output_path) except Exception as e: print(e) pass return output_files def pdf_password_remover(files, password): output_files = [] for file in files: output_files.extend(remove_password([file], password)) return output_files input_components = [ gr.Files(label="Upload PDF(s)"), gr.Textbox(label="Password", type="text") ] output_component = [gr.Files(label="Download Unlocked PDF(s)")] gr.Interface( fn=pdf_password_remover, inputs=input_components, outputs=output_component, title="PDF Password Remover", description="Upload password-protected PDF files and input a single password to unlock them." ).launch(debug=True)