python实现pdf文件合并,多个pdf文件合并,pdf文件叠加

2022-07-29 12:18:11

不多说,直接上代码:

# -*- coding:utf-8*-

# 请拉到最底下,修改这两个变量
# 请修改需要合并的文件的文件夹路径:file_dir
# 请修改输出文件名: outfile

import os
import sys

try:
    from PyPDF2 import PdfFileReader, PdfFileWriter
except:
    os.system("pip install PyPDF2")
    from PyPDF2 import PdfFileReader, PdfFileWriter


# 使用os模块的walk函数,搜索出指定目录下的全部pdf文件
# 获取同一目录下的所有pdf文件的绝对路径
def get_file_name(file_dir,out_file):
    file_dir_L = []
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if os.path.splitext(file)[1] == '.pdf':
                file_dir_L.append(os.path.join(root, file))
            if os.path.splitext(file)[0] == out_file.split(".")[0]:
                print("\n已经存在输出文件:%s 请删除后再运行!!!" % out_file)
                sys.exit()
    return file_dir_L


# 合并同一目录下的所有pdf文件
def merge_pdf(file_path, out_file):
    output = PdfFileWriter()
    outputPages = 0
    pdf_fileName = get_file_name(file_path,out_file)

    if pdf_fileName:
        for pdf_file in pdf_fileName:
            print("正在读取:%s" % pdf_file)

            # 读取pdf文件
            pdf_data = PdfFileReader(open(pdf_file, "rb"))

            # 获得pdf文件中的总页数
            pageCount = pdf_data.getNumPages()
            print("增加 %d 页" % pageCount)
            outputPages += pageCount

            # 将页面添加到输出中
            for iPage in range(pageCount):
                output.addPage(pdf_data.getPage(iPage))

        print("\n合并后的总页数: %d" % outputPages)
        # 写入pdf文件
        outputStream = open(os.path.join(file_path, out_file), "wb")
        output.write(outputStream)
        outputStream.close()
        print("pdf文件合并完成!")

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


# 主函数
def main():
    file_dir = r'D:\Users\DDX\Desktop\test'  # 存放pdf的文件夹
    outfile = "merge.pdf"  # 输出的pdf文件的名称
    merge_pdf(file_dir, outfile)


main()
  • 作者:红色枫叶339
  • 原文链接:https://blog.csdn.net/weixin_41813223/article/details/118023640
    更新时间:2022-07-29 12:18:11