python-pdf驱动之pypdy2

安装

pypdf2是一个非标准库,因此需要自行安装,安装过程并不困难,Windows/Mac用户均可以在命令行(CMD)/终端(Terminal)中使用pip安装

pip install pypdy2

PDF基本操作

PyPDF2 导入模块的代码常常是:

from PyPDF2 import PdfFileReader, PdfFileWriter

PdfFileReader 可以理解为读取器
PdfFileWriter可以理解为写入器

PDF合并

以下内容是基于pypdf2 v3.0.0版本

from PyPDF2 import PdfWriter, PdfReader
import os

dir_path = str(input ('请输入需要合并的PDF所在的文件夹绝对地址,该文件夹中仅有需要合并的PDF:') )		#将需要合并的pdf全部放在一个空的任意文件夹中,并将这个地址录入到这里

#使用os模块遍历目标文件夹中的所有文件,并存到file_list中
def GetFileName(dir_path):
    file_list = [os.path.join(dirpath, filesname)
                 for dirpath, dirs, files in os.walk(dir_path) 
                 for filesname in files]
    return file_list

def merge_pdfs(file_list, output_path):

    #创建一个pdfwriter对象来保存合并后的pdf文件
    output = PdfWriter()

    #遍历要合并的pdf文件列表,并逐个读取并添加到输出对象中
    for pdf_file in file_list:                      #遍历文件列表
        input = PdfReader(open(pdf_file, "rb"))     #以二进制打开pdf文件
        for page in input.pages:                    #遍历每一页
            output.add_page(page)                   #将每一页输出到合并文件中

    #将输出对象保存为一个新的pdf文件
    with open(output_path, "wb") as f:
        output.write(f)

# 要合并的PDF文件列表
file_list = GetFileName(dir_path)
# 合并后的PDF文件路径
output_path = "%s\进阶合并后.pdf" % dir_path

merge_pdfs(file_list, output_path)

执行后输入地址
在这里插入图片描述

打开文件夹查看合并的文件
在这里插入图片描述

PDF拆分

以下内容是基于pypdf2 v3.0.0版本

from PyPDF2 import PdfReader, PdfWriter

path = str(input('请输入需要拆分的文件所在的绝对路径(不含文件名)'))
pdf_reader = PdfReader(path + '\\' + str(input('请输入需要拆分的文件名(需带.pdf)')))

for page in range(len(pdf_reader.pages)):
    # 遍历到每一页挨个生成写入器
    pdf_writer = PdfWriter()
    pdf_writer.add_page(pdf_reader.pages[page])
    # 写入器被添加一页后立即输出产生pdf
    with open(path + '\拆分_{}.pdf'.format(page + 1), 'wb') as out:
        pdf_writer.write(out)

执行后输入地址和文件名
在这里插入图片描述

打开文件夹查看
在这里插入图片描述

PDF添加水印

from PyPDF2 import PdfReader, PdfWriter
from copy import copy

path = str(input('请输入需要插入水印的文件所在的绝对路径(不含文件名):\n'))
pdf_reader = PdfReader(path + '\\' + str(input('请输入需要插入水印的文件名(需带.pdf):\n')))
watermark_reader =  PdfReader(path + '\\' + str(input('请输入同文件夹下水印的文件名(需带.pdf):\n')))

watermark_page = watermark_reader.pages[0]      #将水印文件的第一页作为水印
pdf_writer = PdfWriter()                        #打开pdfwriter

for page in range (len(pdf_reader.pages)):      #遍历需要插入水印的文件
    origin_page = pdf_reader.pages[page]        #从源文件中提取遍历当期页
    new_page = copy(watermark_page)             #新建页面且复制水印页
    new_page.merge_page(origin_page)            #将提取出来的当前页和水印页融合
    pdf_writer.add_page(new_page)               #pdfwriter添加当前融合后的页面

with open(path + r'\\水印后.pdf','wb') as out:
    pdf_writer.write(out)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值