python PyPDF2处理PDF文件
python PyPDF2处理PDF文件
- 安装PyPDF2
pip install PyPDF2
- 官方文档:
- https://pypdf2.readthedocs.io/en/latest/
- 导入模块
import PyPDF2
1. 读取PDF中的内容
# author:mlnt
# createdate:2022/8/16
import PyPDF2 # 导入PyPDF2模块# 官方文档:https://pypi.org/project/PyPDF2/
# 1.打开PDF文件
pdf = open(file='test.pdf', mode='rb') # 以二进制方式打开# 2.获取PDF文件的页数
# 打开PDF文件成功后,可使用PdfFileReader()方法读取PDF内容
pdf_reader = PyPDF2.PdfFileReader(pdf) # 读取PDF内容
print(f'PDF页数为:{pdf_reader.numPages}')
print(f'PDF页数为:{len(pdf_reader.pages)}')# 3.读取PDF页面内容
"""
- 使用PdfFileReader()方法读取PDF文件后,可使用getPage(n)(或pages[n])获取第n页的PDF内容
- PDF页面从第0页开始计算
- 页面内容被读入后,可使用extractText()取得该页的字符串内容
"""
for i in range(pdf_reader.numPages):pageObj = pdf_reader.getPage(i) # 读取第i页内容# pageObj = pdf_reader.pages[i] # 读取第i页内容page_content = pageObj.extractText() # 提取页面内容print(page_content)
test.pdf:
读取效果:
2. PDF简单加密与解密
# author:mlnt
# createdate:2022/8/16import PyPDF2
from PyPDF2 import PdfReader, PdfWriterdef checkEncrypted(filename):"""检查文件是否加密"""pdfObj = open(file=filename, mode='rb') # 以二进制方式打开pdfRd = PyPDF2.PdfFileReader(pdfObj) # 读取PDF内容# 判断文件是否加密if pdfRd.isEncrypted:print(f'{filename}属于加密文件')else:print(f'{filename}未加密')def pdfEncrypt(filename):"""pdf加密"""reader = PdfReader(filename) # 创建RdfReader对象writer = PdfWriter() # 创建PdfWriter对象# 将所有页面添加到writerfor page in reader.pages:# PDF页面旋转page.rotate_clockwise(90) # 旋转90度page.rotate_clockwise(-180) # 逆时针旋转180度writer.add_page(page)# 添加密码writer.encrypt('123456')new_name = filename[:filename.rfind('.pdf')] + '-encrypted.pdf'# 保存pdfwith open(new_name, 'wb') as f:writer.write(f)def pdfDecrypt(filename):"""pdf解密"""reader = PdfReader(filename)writer = PdfWriter()# 判断是否加密if reader.isEncrypted:reader.decrypt('123456')for page in reader.pages:writer.add_page(page)new_name = filename[:filename.rfind('.pdf')] + '-decrypted.pdf'# 保存pdfwith open(new_name, 'wb') as f:writer.write(f)checkEncrypted('test.pdf')
pdfEncrypt('test.pdf')
pdfDecrypt('test-encrypted.pdf')
3. 合并PDF文件
# author:mlnt
# createdate:2022/8/16
from PyPDF2 import PdfMergermerger = PdfMerger() # 创建PdfMerger对象pdf1 = open('test.pdf', 'rb')pdf2 = open('watermark.pdf', 'rb')# 将整个文档添加到merger
merger.append(fileobj=pdf1)# 将pdf2插入到merger,从第0页开始
merger.merge(position=0, fileobj=pdf2)with open('merger-test.pdf', 'wb') as f:merger.write(f)merger.close()
watermark.pdf:
合并效果:
4.处理PDF页面重叠
# author:mlnt
# createdate:2022/8/16
import PyPDF2
from PyPDF2 import PdfReader, PdfWriterreader1 = PdfReader('test.pdf') # 创建RdfReader对象
reader2 = PdfReader('watermark.pdf') # 创建RdfReader对象writer = PdfWriter() # 创建PdfWriter对象# 将所有页面添加到writer
for page in reader1.pages:# 执行重叠合并page.merge_page(reader2.pages[0])# 添加到新的PDF对象writer.add_page(page)# 保存pdf
with open('test-watermark.pdf', 'wb') as f:writer.write(f)
效果:
5. 添加水印到pdf
from pathlib import Path
from typing import Union, Listfrom PyPDF2 import PdfWriter, PdfReader
from typing_extensions import Literaldef watermark(content_pdf: Path,watermark_pdf: Path,pdf_result: Path,page_indices: Union[Literal["ALL"], List[int]] = "ALL",
):"""添加水印:param content_pdf: 要添加水印的pdf文件:param watermark_pdf: 水印pdf:param pdf_result: 处理后保存的文件名:param page_indices: 页面目录:return:"""reader = PdfReader(content_pdf)if page_indices == "ALL":page_indices = list(range(0, len(reader.pages)))writer = PdfWriter()for index in page_indices:content_page = reader.pages[index]mediabox = content_page.mediabox# 读取水印pdf文件reader_watermark = PdfReader(watermark_pdf)# 获取水印pdf文件第1页的内容image_page = reader_watermark.pages[0]# 将两个页面的内容流合并为一个image_page.merge_page(content_page)image_page.mediabox = mediaboxwriter.add_page(image_page)# 保存处理后的内容with open(pdf_result, "wb") as fp:writer.write(fp)watermark(content_pdf='test.pdf', watermark_pdf='watermark.pdf', pdf_result='result.pdf')
效果:
参考:
- 官方文档:https://pypdf2.readthedocs.io/en/latest/
- https://www.cnblogs.com/yuminhu/p/15984340.html
python PyPDF2处理PDF文件相关推荐
- 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库
作者 | megha152 编译 | Flin 来源 | analyticsvidhya 介绍 PDF 代表便携式文档格式.它使用 .pdf 扩展名.这种类型的文件主要用于共享目的.它们不能被修改,从 ...
- 第19天---python办公自动化---操作PDF文件
第19天-python办公自动化-操作PDF文件 在Python中,可以使用名为PyPDF2的三方库来读取PDF文件,可以使用下面的命令来安装它. pip install PyPDF2 读取PDF并抽 ...
- Python使操作PDF文件变得有趣
大家好 我是毕加锁 (锁!) 大家在平时操作PDF文件时是不是感觉很枯燥 那么今天就教大家利用Python让操作PDF文件变得有趣起来 目录 工具 从PDF中提取文本 旋转和叠加页面 加密P ...
- PyPDF2读取PDF文件内容保存到本地TXT
利用PyPDF2读取PDF文件内容保存到本地TXT from PyPDF2.pdf import PdfFileReader import pandas as pddef Pdf_to_txt(pdf ...
- python如何解析PDF文件
python如何解析PDF文件 python中读取pdf的方法:使用python第三方库pdfminerk3k 1.使用pdfminer库 pdfminer是一个主流的分析pdf的库.如果是pytho ...
- Python办公自动化——提取pdf文件中表格并到Excel
Python办公自动化--提取pdf文件中表格合并到Excel 需求描述 现有一 pdf 文件内容如下,文件中内容主要是表格形式的获奖名单,共158页.现要读取这些表格信息并保存到 excel 文件中 ...
- Python怎么将pdf转为图片?Python如何实现pdf文件转图片
而pdf则是用来保存一些内容已经确定好的数据,因为pdf是无法直接修改内容的,所以也会经常将pdf转为图片来保存.本文就将会来介绍一下pdf转图片的方法,往下看看吧. 1.pdf转图片的话主要实现所需 ...
- python合并pdf 加书签_使用Python批量合并PDF文件(带书签功能)
1 #!/usr/bin/env python3 2 #-*- coding: utf-8 -*- 3 ''' 4 #文件名:pdfmerge.py5 本脚本用来合并pdf文件,输出的pdf文件按输入 ...
- 【Python】如何用Python来操作PDF文件,建议收藏
今天这篇文章,我们不谈热点,毕竟最近谈论的热点有点多了,也有点腻了,我们来讲一些Python运用实践当中的小技巧,用Python来操作和处理PDF文件,通过本篇文章,读者朋友大概会学会 1. 通过Py ...
最新文章
- 亿级流量架构之服务器扩容思路及问题分析
- java设计模式---调停者模式
- selenium3 调用IE Unable to get browser
- pycharm导入本地py文件时,模块下方出现红色波浪线时如何解决
- 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!
- 最常用的设计模式---适配器模式(C++实现)
- Android系统--Binder系统具体框架分析(一)补充
- 机器学习之线性代数总结
- mac共享文件夹 linux,一文搞定 Linux,Mac,Windows 的 NFS 网络文件共享服务部署
- 【java】变量的应用
- CSS3中的过渡、动画和变换
- 01我为什么学Unity3d
- 高斯克吕格投影中有关带号与经度的关系
- 微信开通检测工具使用小诀窍
- java 对session的基本使用
- ps去水印教程_图片如何用PS去水印?ps去水印教程,让你1秒学会!
- IMF传奇行动第85课:Spark Streaming第四课:基于HDFS的Spark Streaming案例实战和内幕源码解密
- 【View基础知识】TouchSlop、VelocityTracker、GestureDetector、Scroller
- 华为手机灵敏度设置_华为调屏幕灵敏度设置方法
- 数据中台架构体系浅析
热门文章
- layer添加元素 openlayer_OpenLayers 官网例子的中文详解
- linux日志切割命令,linux日志分割、去重、统计
- 【MT4 Client API 服务器直连接口】接口介绍
- 欲登千层楼,又何惧寒风
- 安信证券 | 神州信息:金融软服增长较快,行业信创蓄势待发
- 摆渡服务器装什么系统,昆明证券数据摆渡平台
- 微信小程序时间显示几分钟前、几小时前、几天前....
- win7识别到移动硬盘,但不显示盘符解决办法
- Minecraft 1.12.2模组开发(十九) 自定义3D物品模型
- 小米3的卡槽,卡住了