python—批量删除pdf页面

由于需要,结合大佬的python代码,做了一个程序,能够把选定目录内所有的pdf文件全部删除到仅剩第一页

参考代码:(17条消息) python——获取文件夹中所有文件的路径_python 获取所有文件路径_哎呦不错的温jay的博客-CSDN博客

(17条消息) python删除pdf指定页的方法_欧气测不准的博客-CSDN博客

import os
import PyPDF2

def listdir(path, list_name):  # 传入存储的list
    for file in os.listdir(path):
        file_path = os.path.join(path, file)# 在path后面添加'\file',形成一个地址
        if os.path.isdir(file_path):#如果file_path是目录
            continue # listdir(file_path, list_name)
        else:
            list_name.append(file_path)# 把file_path添加在list后面
 


def delete_pdf_page(input_path, output_path, page_number):# 输入PDF文件路径,输出PDF文件路径,要保留的页码(从0开始)
    with open(input_path, 'rb') as input_file:# 打开输入路径下的文件,命名为input_file
        reader = PyPDF2.PdfReader(input_file)# 打开的文件用pdf打开,命名为reader
        writer = PyPDF2.PdfWriter()

        num_pages = len(reader.pages)# 页码总数

        if page_number < 0 or page_number >= num_pages:
            print(f"Invalid page number. The PDF file has {num_pages} pages.")
            return

        for current_page in range(num_pages):# 在页码总数里循环当前页码
            if current_page == page_number:# 如果当前页码是要保留的页码
                page = reader.pages[current_page]# 就把当前页码定义为page
                writer.add_page(page)# 把page显示出来

        with open(output_path, 'wb') as output_file:
            writer.write(output_file)# 按照目录输出

        print(f"Page {page_number + 1} deleted successfully.")

# 开始实施
list_name=[]
path='D:\Mr.s\外文文献1'   #文件夹路径
listdir(path,list_name)# 将path内的非目录文件的地址,存入list_name中
page_number_to_delete = 0  # 要保留的页码(从0开始)

for current_path in list_name:
    delete_pdf_page(current_path, current_path, page_number_to_delete)



你可能感兴趣的:(python,pdf,开发语言)