您当前的位置:首页 > 计算机 > 编程开发 > Python

PDF文本合并

时间:01-14来源:作者:点击数:

PDF文本合并

import os
from PyPDF2 import PdfFileReader, PdfFileWriter

# 使用os模块的walk函数,搜索出指定目录下的全部PDF文件
# 获取同一目录下的所有PDF文件的绝对路径
def getnumber(path):
    try:
        res = int(os.path.basename(path).split('.')[0])
    except:
        res = 10000000
    return res

def getFileName(filedir):

    file_list = [os.path.join(root, filespath) \
                 for root, dirs, files in os.walk(filedir) \
                 for filespath in files \
                 if str(filespath).endswith('pdf')
                 ]
    file_list = sorted(file_list,key=lambda x: getnumber(x))  
    return file_list if file_list else []

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

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

            # 读取源PDF文件
            input = PdfFileReader(open(pdf_file, "rb"))

            # 获得源PDF文件中页面总数
            # if index == 4: pageCount = 1
            # else: pageCount = input.getNumPages()

            pageCount = input.getNumPages()
            outputPages += pageCount
            print("页数:%d"%pageCount)

            # 分别将page添加到输出output中
            for iPage in range(pageCount):
                output.addPage(input.getPage(iPage))

        print("合并后的总页数:%d."%outputPages)
        # 写入到目标PDF文件
        outPath = os.path.join(filepath, outfile)
        if os.path.isfile(outPath) == True:
            print(outPath, "PDF文件已存在,请删除后重试!")
            return False
        outputStream = open(outPath, "wb")
        output.write(outputStream)
        outputStream.close()
        # print("PDF文件合并完成!")
        return True
    else:
        # print("没有可以合并的PDF文件!")
        return False

if __name__ == "__main__":
    file_dir = input('请输入存有Pdf的文件夹: ').replace('/','//')# 存放PDF的原文件夹
    outfile = "out.pdf" # 输出的PDF文件的名称
    flag = MergePDF(file_dir, outfile)
    
    if flag: print('PDF合并完成')
    else: print('PDF合并失败,请重试!')

使用方法

在这里插入图片描述

数字编号排序,生成合并后的PDF文件。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门