用PyPDF2库对pdf文件进行操作

基本原理与基础语句

PdfReader类

pdf_file = PyPDF2.PdfReader(filenmae)
通过PdfReader函数可以读取pdf文件并生成一个PdfReader类

该类具有以下重要属性:
pages:读取该类的页面列表,每个页面为一个Page对象,可以通过对该属性进行索引得到不同页面对象,也可以对其使用len函数统计该pdf文件的页数

PdfWriter类

pdf_file = PyPDF2.PdfWriter()
通过PdfWriter函数可以生成一个用于写入的空白PdfWriter类

该类具有以下重要方法:
1、增加页面方法:
add_page(page)
page:Page对象

2、插入页面方法:
insert_page(page, index)
page:Page对象
index:插入的页码,在本页之后插入

PdfMerger类

pdf_file = PyPDF2.PdfMerger()
通过PdfMerger函数可以生成一个用于合并的PdfMerger类

该类具有以下重要方法:
增加文件方法:
append(fileobj)
fileobj:一个文件对象或者一个文件路径名

文件写入

with open(pdf_file, "wb") as f:
        pdf_file.write(f)

其中pdf_file是PdfWriter类或PdfMerger类

对pdf文件进行插入操作

import PyPDF2


def insert_pdf(input_pdf, insert_pdf, output_pdf, insert_page):
    '''
    input_pdf:需要插入的pdf文件名
    insert_pdf:用于插入的padf文件名
    output_pdf:新生成的pdf文件名
    insert_page:在insert_page这一页之后插入,insert_page从1开始
    '''
    input_pdf = PyPDF2.PdfReader(input_pdf)
    insert_pdf_list = []
    for i in insert_pdf:
        insert_pdf_list.append(PyPDF2.PdfReader(i))
    
    output_file = PyPDF2.PdfWriter()
    
    for i in range(0, len(input_pdf.pages)):
        output_file.add_page(input_pdf.pages[i])
    
    num = 0
    for i in range(len(insert_page)):
        for j in range(0, len(insert_pdf_list[i].pages)):
            output_file.insert_page(insert_pdf_list[i].pages[j], int(num + insert_page[i] + j))
        num += len(insert_pdf_list[i].pages)
    
    with open(output_pdf, "wb") as f:
        output_file.write(f)
    
    return None


insert_pdf(file0,
           [file1, file2, file3],
           new_file,
           [index1, index2, index3])

对pdf文件进行删除页操作

import PyPDF2


def delete_pdf(input_pdf, output_pdf, delete_page):
    '''
    input_pdf:用于操作的pdf文件名
    outpupt_pdf:新生成的pdf文件名
    delete_page:从1开始,将当前页面删除
    '''
    input_pdf = PyPDF2.PdfReader(input_pdf)
    
    for i in range(len(delete_page)):
        delete_page[i] -= 1
    
    output_file = PyPDF2.PdfWriter()
    
    for i in range(0, len(input_pdf.pages)):
        if not i in delete_page:
            output_file.add_page(input_pdf.pages[i])
    
    with open(output_pdf, "wb") as f:
        output_file.write(f)
    
    return None


delete_pdf(file0,
           new_file,
           [index1, index2])

对pdf文件进行分割操作

import PyPDF2


def split_pdf(input_pdf, output_pdf_list, split_page):
    '''
    input_pdf:用于操作的pdf文件名
    output_pdf_list:新生成的pdf文件名列表
    split_page:在split_page这一页之后分割,split_page从1开始
    '''
    input_pdf = PyPDF2.PdfReader(input_pdf)
    
    
    split_page = [0] + split_page + [len(input_pdf.pages)]
    
    for i in range(len(split_page)-1):
        output_file = PyPDF2.PdfWriter()
        for j in range(split_page[i], split_page[i+1]):
            output_file.add_page(input_pdf.pages[j])
        
        with open(output_pdf_list[i], "wb") as f:
            output_file.write(f)
    
    return None


split_pdf(file0,
          [new_file1, new_file2, new_fil3, new_file4],
          [index1, index2, index3])

对pdf文件进行合并操作

import PyPDF2


def merge_pdf(input_pdf_list, output_pdf):
    '''
    input_pdf_list:用于合并的pdf文件名列表
    output_pdf:新生成的pdf文件名
    '''
    output_file = PyPDF2.PdfMerger()
    
    for i in input_pdf_list:
        output_file.append(i)
        
    with open(output_pdf, "wb") as f:
        output_file.write(f)
    
    return None


merge_pdf([file1, file2], new_file)
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值