Python操作PDF全总结|pdfplumber&PyPDF2

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Python操作PDF全总结|pdfplumber&PyPDF2

Python在自动化办公方面有很多实用的第三方库,可以很方便的处理word、excel、ppt、pdf文件,今天我们就学习一下Python处理PDF文档的知识,Python处理pdf有很多第三方库,这里先给大家介绍最常用的两个库「pdfplumber」「pypdf2」

「pdfplumber:」

pdfplumber库按页处理 pdf ,获取页面文字,提取表格等操作。

学习文档:https://github.com/jsvine/pdfplumber

「pypdf2:」

PyPDF2 是一个纯 Python PDF 库,可以读取文档信息(标题,作者等)、写入、分割、合并PDF文档,它还可以对pdf文档进行添加水印、加密解密等。

官方文档:https://pythonhosted.org/PyPDF2

安装:

pip install pypdf2

pip install pdfplumber

pdfplumber

提取PDF文字

「提取单页pdf文字」

# 提取pdf文字
import pdfplumber
with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf:
    page01 = pdf.pages[0] #指定页码
    text = page01.extract_text()#提取文本
    print(text)

img

「提取所有页pdf文字」

import pdfplumber
with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()#提取文本
        print(text)

「提取所有pdf文字并写入文本中」

import pdfplumber
with pdfplumber.open("D:\\pdffiles\\Python编码规范中文版.pdf") as pdf:
    for page in pdf.pages:
        text = page.extract_text()#提取文本
        txt_file = open("D:\\pdffiles\\Python编码规范中文版.txt",mode='a',encoding='utf-8')
        txt_file.write(text)

img

提取PDF表格

「提取表格」

# 提取pdf表格
import pdfplumber
with pdfplumber.open("D:\\pdffiles\\人力资源部岗位编制.pdf") as pdf:
    page01 = pdf.pages[0] #指定页码
    table1 = page01.extract_table()#提取单个表格
    # table2 = page01.extract_tables()#提取多个表格
    print(table1)

img

「提取表格,保存为excel文件」

import pdfplumber
from openpyxl import Workbook #保存表格,需要安装openpyxl
with pdfplumber.open("D:\\pdffiles\\人力资源部岗位编制.pdf") as pdf:
    page01 = pdf.pages[0]
    table = page01.extract_table()
    workbook = Workbook()
    sheet = workbook.active
    for row in table:
        sheet.append(row)
    workbook.save(filename="D:\\pdffiles\\人力资源部岗位编制.xlsx")

img

PyPDF2

PyPDF2 中有两个最常用的类:PdfFileReader和PdfFileWriter,分别用于读取 PDF 和写入 PDF。其中PdfFileReader传入参数可以是一个打开的文件对象,也可以是表示文件路径的字符串。而PdfFileWriter则必须传入一个以写方式打开的文件对象。

「PdfFileReader 对象的属性和方法」

img

「PdfFileWriter 对象的属性和方法」

img

分割PDF

from PyPDF2 import  PdfFileReader, PdfFileWriter
file_reader = PdfFileReader("D:\\pdffiles\\Python编码规范中文版.pdf")
# getNumPages() 获取总页数
for page in range(file_reader.getNumPages()):
    # 实例化对象
    file_writer = PdfFileWriter()
    # 将遍历的每一页添加到实例化对象中
    file_writer.addPage(file_reader.getPage(page))
    with open("D:\\pdffiles\\{}.pdf".format(page),'wb') as out:
        file_writer.write(out)

img

合并PDF

将上述分割的pdf合并成一个文件

「示例代码」

from PyPDF2 import  PdfFileReader, PdfFileWriter
file_writer = PdfFileWriter()
for page in range(34):
    # 循环读取需要合并pdf文件
    file_reader = PdfFileReader("D:\\pdffiles\\{}.pdf".format(page))
    # 遍历每个pdf的每一页
    for page in range(file_reader.getNumPages()):
        # 写入实例化对象中
        file_writer.addPage(file_reader.getPage(page))

with open("D:\\pdffiles\\合并.pdf",'wb') as out:
    file_writer.write(out)

PDF旋转

# 旋转pdf,只能按照90度的倍数旋转
from PyPDF2 import  PdfFileReader, PdfFileWriter
file_reader = PdfFileReader("D:\\pdffiles\\Python编码规范中文版.pdf")
file_writer = PdfFileWriter()
page = file_reader.getPage(0).rotateClockwise(90) # 第1页顺时针旋转90度
file_writer.addPage(page) # 写入
page = file_reader.getPage(1).rotateCounterClockwise(90) # 第2页逆时针旋转90度
file_writer.addPage(page) # 写入
with open("D:\\pdffiles\\旋转.pdf",'wb') as out:
    file_writer.write(out)

PDF加密解密

「添加密码」

from PyPDF2 import  PdfFileReader, PdfFileWriter
file_reader = PdfFileReader("D:\\pdffiles\\Python编码规范中文版.pdf")
file_writer = PdfFileWriter()
for page in range(file_reader.getNumPages()):
    file_writer.addPage(file_reader.getPage(page))

file_writer.encrypt('123456') # 设置密码
with open("D:\\pdffiles\\加密后.pdf",'wb') as out:
    file_writer.write(out)

打开文件,提示输入密码

img

「解除密码」

from PyPDF2 import  PdfFileReader, PdfFileWriter
file_reader = PdfFileReader("D:\\pdffiles\\加密后.pdf")
file_reader.decrypt('123456')
file_writer = PdfFileWriter()
for page in range(file_reader.getNumPages()):
    file_writer.addPage(file_reader.getPage(page))

with open("D:\\pdffiles\\解密后.pdf",'wb') as out:
    file_writer.write(out)

PDF添加水印

首先准备一个水印文档,可以用空白word添加图片或者文字转成pdf文件。

img

「示例代码」

# 添加水印
from PyPDF2 import  PdfFileReader, PdfFileWriter
from copy import copy
sy = PdfFileReader("D:\\pdffiles\\水印.pdf")
mark_page = sy.getPage(0) # 水印所在的页数
# 读取添加水印的文件
file_reader = PdfFileReader("D:\\pdffiles\\Python编码规范中文版.pdf")
file_writer = PdfFileWriter()

for page in range(file_reader.getNumPages()):
    # 读取需要添加水印每一页pdf
    source_page = file_reader.getPage(page)
    new_page = copy(mark_page) #
    new_page.mergePage(source_page) # new_page(水印)在下面,source_page原文在上面
    file_writer.addPage(new_page)

with open("D:\\pdffiles\\添加水印后.pdf",'wb') as out:
    file_writer.write(out)

添加水印后的文档:

img

目录
相关文章
|
3月前
|
SQL 存储 数据挖掘
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
本文介绍了一种使用Python和`pdfplumber`库自动筛选简历的方法,特别是针对包含“SQL”技能的简历。通过环境准备、代码解析等步骤,实现从指定文件夹中筛选出含有“SQL”关键词的简历,并将其移动到新的文件夹中,提高招聘效率。
80 8
使用Python和PDFPlumber进行简历筛选:以SQL技能为例
|
5月前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
81 3
|
5月前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
72 1
|
5月前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据
104 1
|
6月前
|
Python
Python办公自动化:提取pdf文件中的图片
Python办公自动化:提取pdf文件中的图片
80 0
|
5月前
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
59 0
|
6月前
|
数据安全/隐私保护 Python
Python办公自动化:给pdf加水印
Python办公自动化:给pdf加水印
98 0
|
3月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
3月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
3月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
128 80

热门文章

最新文章