你好,欢迎进入北京杰飞IT培训学校官网!

专注于电脑培训

Focus on Computer Training

010-88685956 / 18510013611

客服服务时间:9:00-18:00

当前位置: 首页>新闻中心>学习资讯

使用Python合并多个pdf文件代码块

发布时间:2022-06-12

浏览次数:760

我们在学习和工作中经常会遇到对PDF文件的一些编辑需求,例如在整理pdf文件时需要把多个pdf文件进行合并,或者提取某个pdf文件中某些页面。这时如果你想到用python来解决这些个问题,那么下面就给出大家一些我的处理方法,以供参考。


# 导入相关库

import os, PyPDF2, re

from PyPDF2 import PdfFileMerger


#合并pdf函数

def connect_pdf():


    # 将需要合并的pdf文件放到一个文件夹中,最好按顺序1.pdf,2.pdf,3.pdf....类似命名

    target_path = r'D:\待合并文件'


    # 使用os.listdir方法获取制定目录下的所有pdf文件名称(获取文件名以.pdf结尾的文件)

    pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]


    # 把字符串按数字顺序再排序(这个就是把需要合并文件按数字顺序命名的原因)

    # 下面的正则表达式是获取文件名中的数字,再以数字从小到大排序需要合并的文件

    pdf_lst.sort(key = lambda i:int(re.match(r'(\d+)', i).group()))


    # 使用os.path.join方法拼接成绝对路径

    pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]


    # 创建PdfFileMerger对象,这是专门用来合并pdf文件的对象

    file_merger = PdfFileMerger()

    for pdf in pdf_lst:

        file_merger.append(pdf)     # 合并pdf文件

        print(pdf, "合并成功!!")


    # 使用write方法将所有pdf文件写入到一个文件

    file_merger.write(r"C:\Users\Desktop\合并后文件.pdf")



# 读取pdf指定页面

def get_Specify_pdfs():


    # 需要获取页面的目标pdf文件

    path = r"C:\Users\Desktop\target.pdf"


    # 使用with open()的方式打开文件可以不用手动关闭文件对象

    with open(path, "rb") as  fp1:  # 以读二进制模式打开pdf文件


        # 调用PyPDF2.PdfFileReader()方法,获取该PDF的PdfFileReader对象

        pdfreader = PyPDF2.PdfFileReader(fp1)    


        # 该pdf文档的总页数保存在 PdfFileReader 对象的 numPages 属性中,打印页数

        print("该pdf文件总页数是:%s 页!" % pdfreader.numPages)

        

        # 新建一个PdfFileWriter对象,它表示一个空白的PDF文档对象,用来写入目标pdf

        pdfWriter = PyPDF2.PdfFileWriter()  # PdfFileWriter对象


        # 通过getPage()方法获取想要的pdf页,生成Page对象

        page_one = pdfreader.getPage(0) # 获取pdf的第一页

        pdfWriter.addPage(page_one)     # 把Page对象添加到PdfFileWriter对象中


        # 假如要获取pdf文件的3,6,9页

        # page_list = [2, 5, 8]

        # for num in page_list:

        #     page_one = pdfreader.getPage(num)

        #     pdfWriter.addPage(page_one)     # 把Page对象添加到PdfFileWriter对象中


        # 打开一个pdf的输出路径

        with open(r"C:\Users\Desktop\提取后文件.pdf", 'wb') as fp2:

            pdfWriter.write(fp2)  # 把PdfFileWriter对象的内容保存到文件中

            print("pdf文件生成成功!")

if __name__ == "__main__":


    # 调用相应函数

    connect_pdf()    # 调用合并pdf函数

    get_Specify_pdfs()    # 调用提取pdf函数

        上面的代码替换文件路径后可以直接复制粘贴使用 ,如果你觉得对你有帮助,就点个赞吧。


北京杰飞电脑培训优势
已服务2000余名学员,所有课程学会为止
  • 面对面授课
    零基础者也可以完全掌握,课程内容与深度紧贴职场需要,毕业即可工作
  • 小班与1对1
    小班授课,每班3-5人,学习效果有保证。
  • 作业
    课后布置大量作业需要学员独立完成,动手练习大于一切。
  • 试听
    免费试听课程,满意后报名,杰飞专注电脑培训11年。
  • 长期有效
    报名后长期有效,可以无限复学,工作上有任何问题都可以来杰飞为您解答。

在线客服
服务热线

服务热线

010-88685956 / 18510013611

微信咨询
北京杰飞IT培训学校
返回顶部