Python 合并两个或多个pdf文件(获取pdf文件指定页)


前言

        我们在学习和工作中经常会遇到对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函数

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

### 回答1: 你可以使用 PyPDF2 库来合并多个 PDF 文件为一个 PDF 文件。首先,你需要安装这个库,使用以下命令: ```python pip install pypdf2 ``` 然后,你可以使用以下代码来合并多个 PDF 文件: ```python import os import glob import PyPDF2 # 创建一个 PDF 合并merger = PyPDF2.PdfFileMerger() # 读取当前目录下的所有 PDF 文件 for pdf in glob.glob("*.pdf"): # 读取每个 PDF 文件 with open(pdf, "rb") as f: merger.append(f) # 将所有 PDF 文件合并到一个新的 PDF 文件中 with open("merged.pdf", "wb") as f: merger.write(f) ``` 这段代码会将当前目录下的所有 PDF 文件合并为一个新的 PDF 文件,命名为 "merged.pdf"。 希望这对你有帮助! ### 回答2: 要合并多个PDF文件为一个PDF文件,可以使用Python的PyPDF2库来实现。 首先,你需要安装PyPDF2库,可以使用以下命令来安装: ``` pip install PyPDF2 ``` 接下来,你可以使用以下代码来合并多个PDF文件为一个PDF文件: ```python import PyPDF2 def merge_pdf(input_paths, output_path): merger = PyPDF2.PdfFileMerger() for path in input_paths: with open(path, 'rb') as file: merger.append(file) with open(output_path, 'wb') as file: merger.write(file) if __name__ == '__main__': input_paths = ['file1.pdf', 'file2.pdf', 'file3.pdf'] # 待合并PDF文件路径列表 output_path = 'merged.pdf' # 合并后的PDF文件路径 merge_pdf(input_paths, output_path) ``` 在上述代码中,首先导入PyPDF2库。然后定义了一个名为`merge_pdf`的函数,接收两个参数:`input_paths`和`output_path`。`input_paths`是待合并PDF文件路径列表,`output_path`是合并后的PDF文件路径。 在`merge_pdf`函数中,创建了一个`PdfFileMerger`对象用于合并PDF文件。然后,通过遍历`input_paths`列表,打开每一个PDF文件,并使用`append`方法将其添加到合并对象中。 最后,使用`wb`模式打开输出路径的文件,并使用`write`方法将合并对象的内容写入文件。 使用上述代码,你可以将多个PDF文件合并为一个PDF文件,并保存为指定路径。 ### 回答3: 要使用Python合并多个pdf文件为一个pdf文件,你可以使用PyPDF2库。以下是一个简单的代码示例: ```python from PyPDF2 import PdfMerger # 定义要合并pdf文件列表 pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf'] # 创建PdfMerger对象 merger = PdfMerger() # 逐个合并pdf文件 for pdf_file in pdf_files: merger.append(pdf_file) # 定义目标合并后的pdf文件名 output_file = 'merged_file.pdf' # 将合并后的pdf文件保存到目标文件merger.write(output_file) # 关闭PdfMerger对象 merger.close() print('pdf文件合并完成!') ``` 在代码中,我们首先导入了`PdfMerger`类。然后,我们定义了要合并pdf文件列表,并创建了一个`PdfMerger`对象`merger`。 接着,我们使用`append()`方法逐个将pdf文件添加到`merger`对象中。 然后,我们定义了合并后的pdf文件名`output_file`,并通过`write()`方法将合并后的pdf文件保存到目标文件中。 最后,我们关闭了`merger`对象,并输出了合并完成的提示信息。 希望以上代码能够帮助你实现合并多个pdf文件为一个pdf文件的需求!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值