用python按pdf创建时间排序合并pdf,并添加书签

import os
import sys
import os
from PyPDF2 import PdfFileReader, PdfFileWriter
import time
DIR = "C:\\Users\\pc\\Desktop\新建文件夹 (4)"
#获取最大递归深度
print(sys.getrecursionlimit())
sys.setrecursionlimit(2000)

def get_file_list(file_path):
    dir_list = os.listdir(file_path)
    if not dir_list:
        return
    else:
        # 注意,这里使用lambda表达式,将文件按照最后修改时间顺序升序排列
        # os.path.getmtime() 函数是获取文件最后修改时间
        # os.path.getctime() 函数是获取文件最后创建时间
        dir_list = sorted(dir_list,  key=lambda x: os.path.getmtime(os.path.join(file_path, x)))
        # print(dir_list)
        return dir_list

# 合并同一目录下的所有PDF文件
def MergePDF(filepath, outfile):
    output = PdfFileWriter()
    outputPages = 0
    pdf_fileName = get_file_list(DIR)

    if pdf_fileName:
        for pdf_file in pdf_fileName:
            print("路径:%s" % pdf_file)

            # 读取源PDF文件
            # input = PdfFileReader(open(pdf_file, "rb"))
            try:
                input = PdfFileReader(open(os.path.join(filepath, pdf_file),  "rb"))
            except:
                pass
            # 获得源PDF文件中页面总数
            pageCount = input.getNumPages()
            outputPages += pageCount
            print("页数:%d" % pageCount)
            title = pdf_file[:-4]
            print(title)
            # 分别将page添加到输出output中
            for iPage in range(pageCount):
                output.addPage(input.getPage(iPage))

            output.addBookmark(title=pdf_file[:-4], pagenum=outputPages - pageCount)


        print("合并后的总页数:%d." % outputPages)
        # 写入到目标PDF文件
        outputStream = open(os.path.join(filepath, outfile), "wb")
        output.write(outputStream)
        outputStream.close()
        print("PDF文件合并完成!")

    else:
        print("没有可以合并的PDF文件!")

MergePDF("C:\\Users\\pc\\Desktop\\新建文件夹 (4)", '测试.pdf')

 

你可能感兴趣的:(Python)