[python]PDF批量增加密码

import PyPDF2
import os

# 获取当前目录下所有PDF文件
pdf_files = [f for f in os.listdir() if f.endswith('.pdf')]

# 如果目录下没有PDF文件
if not pdf_files:
    print("当前目录下没有PDF文件。")
else:
    # 显示PDF文件列表
    print("请选择要加密的PDF文件:")
    print("0. 加密所有PDF文件")
    for idx, pdf in enumerate(pdf_files, start=1):
        print(f"{idx}. {pdf}")

    # 用户输入选择的编号
    try:
        choice = int(input("请输入文件编号: "))
        if choice == 0:
            # 如果选择0,则加密所有PDF文件
            for pdf in pdf_files:
                with open(pdf, 'rb') as input_pdf:
                    # 读取PDF文件
                    pdf_reader = PyPDF2.PdfReader(input_pdf)

                    # 创建一个PdfWriter对象,用于写入加密后的PDF
                    pdf_writer = PyPDF2.PdfWriter()

                    # 将原始PDF中的每一页添加到PdfWriter对象
                    for page_num in range(len(pdf_reader.pages)):
                        page = pdf_reader.pages[page_num]
                        pdf_writer.add_page(page)

                    # 设置密码
                    password = 'xxxxxxxxxxxx'
                    pdf_writer.encrypt(password)

                    # 生成加密后的PDF文件名
                    output_file_path = pdf.replace('.pdf', '_Ok.pdf')

                    # 创建加密后的PDF文件并保存
                    with open(output_file_path, 'wb') as output_pdf:
                        pdf_writer.write(output_pdf)

                    print(f"PDF {pdf} 加密成功!加密后的文件保存为 {output_file_path}")

                # 删除原始未加密的PDF文件
                os.remove(pdf)
                print(f"原文件 {pdf} 已删除。")

        elif 1 <= choice <= len(pdf_files):
            # 如果选择了一个文件
            selected_file = pdf_files[choice - 1]

            # 打开选中的PDF文件
            with open(selected_file, 'rb') as input_pdf:
                # 读取PDF文件
                pdf_reader = PyPDF2.PdfReader(input_pdf)

                # 创建一个PdfWriter对象,用于写入加密后的PDF
                pdf_writer = PyPDF2.PdfWriter()

                # 将原始PDF中的每一页添加到PdfWriter对象
                for page_num in range(len(pdf_reader.pages)):
                    page = pdf_reader.pages[page_num]
                    pdf_writer.add_page(page)

                # 设置密码
                password = 'xxxxxxxxxxxx'
                pdf_writer.encrypt(password)

                # 生成加密后的PDF文件名
                output_file_path = selected_file.replace('.pdf', '_Ok.pdf')

                # 创建加密后的PDF文件并保存
                with open(output_file_path, 'wb') as output_pdf:
                    pdf_writer.write(output_pdf)

                print(f"PDF 加密成功!加密后的文件保存为 {output_file_path}")

            # 删除原始未加密的PDF文件
            os.remove(selected_file)
            print(f"原文件 {selected_file} 已删除。")

        else:
            print("选择的编号无效。")
    except ValueError:
        print("请输入有效的编号。")