【Python基础】python使用PyPDF2和pdfplumber操作pdf

1、PyPDF2和pdfplumber库介绍
  • PyPDF2官网:PyPDF2官网 ,可以更好的读取、写入、分割、合并PDF文件;

  • pdfplumber官网:pdfplumber官网,可以更好地读取PDF文件内容和提取PDF中的表格;

  • 这两个库不属于python标准库,都需要单独安装;

2、python提取PDF文字内容
1)利用pdfplumber提取文字
import PyPDF2
import pdfplumber


with pdfplumber.open("餐饮企业综合分析.pdf") as p:
    page = p.pages[2]
    print(page.extract_text())

结果如下:

2)利用pdfplumber提取表格并写入excel
  • extract_table():如果一页有一个表格;

  • extract_tables():如果一页有多个表格;

import PyPDF2
import pdfplumber
from openpyxl import Workbook


with pdfplumber.open("餐饮企业综合分析.pdf") as p:
    page = p.pages[4]
    table = page.extract_table()
    print(table)
    
    workbook = Workbook()
    sheet = workbook.active
    for row in table:
        if not "".join() == ""
            sheet.append(row)
    workbook.save(filename = "新pdf.xlsx")

结果如下:缺陷:可以看到,这里提取出来的表格有很多空行,怎么去掉这些空行呢?判断:将列表中每个元素都连接成一个字符串,如果还是一个空字符串那么肯定就是空行。

import PyPDF2
import pdfplumber
from openpyxl import Workbook


with pdfplumber.open("餐饮企业综合分析.pdf") as p:
    page = p.pages[4]
    table = page.extract_table()
    print(table)
    
    workbook = Workbook()
    sheet = workbook.active
    for row in table:
        if not "".join([str(i) for i in row]) == "":
            sheet.append(row)
    workbook.save(filename = "新pdf.xlsx")

结果如下:

3、PDF合并及页面的排序和旋转
1)分割及合并pdf
① 合并pdf

首先,我们有如下几个文件,可以发现这里共有三个PDF文件需要我们合并。同时可以发现他们的文件名都是有规律的(如果文件名,没有先后顺序,我们合并起来就没有意义了。)代码如下:

from PyPDF2 import PdfFileReader, PdfFileWriter


pdf_writer = PdfFileWriter()
for i in range(1,len(os.listdir(r"G:\6Tipdm\7python办公自动化\concat_pdf"))+1):
    print(i*50+1,(i+1)*50)
    pdf_reader = PdfFileReader("G:\\6Tipdm\\7python办公自动化\\concat_pdf\{}-{}.pdf".format(i*50+1,(i+1)*50))
    for page in range(pdf_reader.getNumPages()):
        pdf_writer.addPage(pdf_reader.getPage(page))
        
with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\merge.pdf", "wb") as out:
    pdf_writer.write(out)

结果如下:

② 拆分pdf

这里有一个“时间序列.pdf”的文件,共3页,我们将其每一页存为一个PDF文件。代码如下:

from PyPDF2 import PdfFileReader, PdfFileWriter


pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf")
for page in range(pdf_reader.getNumPages()):
    pdf_writer = PdfFileWriter()
    pdf_writer.addPage(pdf_reader.getPage(page))
    with open(f"G:\\6Tipdm\\7python办公自动化\\concat_pdf\\{page}.pdf", "wb") as out:
        pdf_writer.write(out)

结果如下:

2)旋转及排序pdf
① 旋转pdf
  • .rotateClockwise(90的倍数):顺时针旋转90度

  • .rotateCounterClockwise(90的倍数):逆时针旋转90度

from PyPDF2 import PdfFileReader, PdfFileWriter


pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf")
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):
    if page % 2 == 0:
        rotation_page = pdf_reader.getPage(page).rotateCounterClockwise(90)
    else:
        rotation_page = pdf_reader.getPage(page).rotateClockwise(90)
    pdf_writer.addPage(rotation_page)
    with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\旋转.pdf", "wb") as out:
        pdf_writer.write(out)
"""
上述代码中,我们循环遍历了这个pdf,对于偶数页我们逆时针旋转90°,对于奇数页我们顺时针旋转90°;
注意:旋转的角度只能是90的倍数;
"""

其中一页效果展示如下:

② 排序pdf

需求:我们有一个PDF文件,我们需要倒序排列,应该怎么做呢?首先,我们来看python中,怎么倒叙打印一串数字,如下图所示。那么倒序排列一个pdf,思路同上,代码如下:

from PyPDF2 import PdfFileReader, PdfFileWriter


pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf")
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()-1, -1, -1):
    pdf_writer.addPage(pdf_reader.getPage(page))
with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\倒序.pdf", "wb") as out:
        pdf_writer.write(out)

结果如下:

4、pdf批量加水印及加密、解密
1)批量加水印
from PyPDF2 import PdfFileReader, PdfFileWriter
from copy import copy


water = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\水印.pdf")
water_page = water.getPage(0)


pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\aa.pdf")
pdf_writer = PdfFileWriter()


for page in range(pdf_reader.getNumPages()):
    my_page = pdf_reader.getPage(page)
    new_page = copy(water_page)
    new_page.mergePage(my_page)
    pdf_writer.addPage(new_page)
with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\添加水印后的aa.pdf", "wb") as out:
        pdf_writer.write(out)  
"""
这里有一点需要注意:进行pdf合并的时候,我们希望“水印”在下面,文字在上面,因此是“水印”.mergePage(“图片页”)
"""

结果如下:

2)批量加密、解密
  • 这里所说的“解密”,是在知道pdf的密码下,去打开pdf,而不是暴力破解;

① 加密pdf
from PyPDF2 import PdfFileReader, PdfFileWriter


pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf")
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):
    pdf_writer.addPage(pdf_reader.getPage(page))
# 添加密码
pdf_writer.encrypt("a123456")
with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\时间序列.pdf", "wb") as out:
        pdf_writer.write(out)

结果如下:

② 解密pdf并保存为未加密的pdf
from PyPDF2 import PdfFileReader, PdfFileWriter


pdf_reader = PdfFileReader(r"G:\6Tipdm\7python办公自动化\concat_pdf\时间序列.pdf")
# 解密pdf
pdf_reader.decrypt("a123456")
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):
    pdf_writer.addPage(pdf_reader.getPage(page))
with open("G:\\6Tipdm\\7python办公自动化\\concat_pdf\\未加密的时间序列.pdf", "wb") as out:
        pdf_writer.write(out)

结果如下:

作者 :Huang Supreme

往期精彩回顾



适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
本站qq群704220115,加入微信群请扫码:

风度78
关注 关注
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python利用PyPDF2库获取PDF文件总页码实例
09-17
主要介绍了Python利用PyPDF2库获取PDF文件总页码实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
pypdf2pdfplumber模块介绍
I_HAVE_COME的博客
05-02 752
pypdf2模块 可以读取、写入、分割、合并PDF文件 需要单独安装 pdfplumber模块 为了更好的读取PDF文件内容 可以提取PDF中的表格 需要单独安装 学习链接:https://www.bilibili.com/video/BV197411f7Rp ...
python 使用 PyPDF2pdfplumber 操 作 pdf
qq_44284204的博客
08-03 753
1. PyPDF2pdfplumber 库安装 PyPDF2 官网:https://pythonhosted.org/PyPDF2/ PyPDF2 可以更好的读取、写入、分割、合并 PDF 文件; pdfplumber 官网:https://github.com/jsvine/pdfplumber pdfplumber 可以更好地读取 PDF 文件内容和提取 PDF 中的表格; 这两个库不属于 python 标准库,都需要单独安装; 2. python 提取 PDF 文字内容 2 .1 利用 pd
PyPDF2,一个超实用的 Python 库!
涛哥聊Python
04-15 850
Python PyPDF库是一款功能强大的工具,用于处理和操作PDF文档。它提供了丰富的特性,包括合并PDF文档、提取文本内容、设置文档信息、加密和解密PDF文档以及页面操作等功能。通过PyPDF库,开发者可以轻松地实现PDF文档的合并、提取、加密和页面操作操作。它在文档处理、数据提取和安全保护等实际应用场景中具有广泛的用途。总之,Python PyPDF库是处理PDF文档的利器,为开发者提供了强大的功能和灵活的操作方式。
python数据处理》pdf文件解析模块:pdfminer和pdfplumber
python__reported的博客
05-01 2499
pdfplumberpdfminer为基础,但是pdfminer的操作过于复杂且代码过于冗长。 注:pdfminer在python3.0以上为pdfminer3k pdfminer3k 实现解析的代码: from pdfminer.pdfparser import PDFParser from pdfminer.pdfdocument import PDFDocument from pdfmi...
Python库——PyPDF2介绍
GMSJSHX的博客
10-19 4177
PythonPyPDF2库介绍
python操作pdf做文档的分割、合并,内容提取
weixin_43604754的博客
06-22 2638
Python 操作 PDF 会用的库:PyPDF2pdfplumber PyPDF2 可以更好的读取、写入、分割、合并PDF文件; pdfplumber 可以更好的读取 PDF 文件中内容和提取 PDF 中的表格。 对应的官网分别是: PyPDF2:https://pythonhosted.org/PyPDF2/ pdfplumber:https://github.com/jsvine/pdfplumber 输入如下命令在conda种进行安装: pip install PyPDF2 pip in
Python实现PyPDF2处理PDF文件的方法示例
09-18
主要介绍了Python实现PyPDF2处理PDF文件的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
pdf-to-txt-python:使用PDFtk和PyPDF2使用python简单地将pdf转换为文本
05-09
使用PythonPDF转换为文本 介绍 该程序将: 将您的PDF分成几页, 从每页中提取文本,然后 将它们保存在.txt文件中。 必需的 ( ) 跑步 $ python main.py 为什么要使用PDFtk? 因为PyPDF2的提取功能不适用于...
Python使用pypdf2合并、分割、加密pdf文件的代码详解
09-19
主要介绍了Python使用pypdf2合并、分割、加密pdf文件的代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
python3用PyPDF2解析pdf文件,用正则匹配数据方式
09-16
主要介绍了python3用PyPDF2解析pdf文件,用正则匹配数据方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
(Linux)显存被占用-显示没有进程-nohup
qq_39214409的博客
05-25 406
这种情况多半是代码中 num_works 的设置大于1导致的。nvidia-smi显示的PID是父进程,那么在kill掉此进程后,子进程仍然在工作。关键问题在于如何找到子进程并终止。
Web Speech API(2)—— SpeechSynthesis
LiangRZ
05-21 926
Web Speech API 有两个部分:SpeechSynthesis 语音合成(文本到语音 TTS)和 SpeechRecognition 语音识别(异步语音识别)。语音合成 (也被称作是文本转为语音,英语简写是 tts) 包括接收 app 中需要语音合成的文本,再在设备麦克风播放出来这两个过程。其中包含了将由语音服务朗读的内容,以及如何朗读它(例如:语种、音高、音量)。语音合成服务的控制器接口,可用于获取设备上可用的合成语音,开始、暂停以及其他相关命令的信息。控制器,从而获取语音合成功能的入口。
【文末附gpt升级方案】Lumina-T2X:大型扩散DiTs在多模态内容生成中的新篇章
最新发布
蒲松龄
05-26 424
随着人工智能技术的飞速发展,多模态内容生成已成为计算机视觉和自然语言处理领域的研究热点。本文介绍了Lumina-T2X,一个基于大型扩散变换器(Diffusion Transformers, DiTs)的多模态内容生成模型。Lumina-T2X通过创新的Flow-based Large Diffusion Transformers(Flag-DiT)架构,实现了从文本到图像、视频、多视图3D对象和音频剪辑的跨模态生成。
护目镜佩戴自动识别预警摄像机
bova2022的博客
05-24 275
当摄像机检测到未佩戴护目镜时,摄像机会立即发出预警信号,提醒周围的工人及时采取安全措施,从而最大限度地减少工伤事故的发生。这种设备的应用具有重要意义。其次,它还能使管理人员在第一时间收到预警信号,对可能的安全隐患进行及时处理,降低了工作场所发生意外事故的风险。这样,护目镜佩戴自动识别预警摄像机将能够更好地为工作场所的安全生产提供保障,推动工作场所的安全生产管理和风险控制向更加智能化的发展。是一种智能监测设备,专门用于佩戴护目镜的工人进行作业时,能够自动识别有潜在风险的场景,并及时发出预警信号。
【一站式学会Kotlin】第七节:kotlin匿名函数的it关键字
左耳的专栏
05-26 266
【一站式学会Kotlin】免费领取:文章下有作者微信(zhaoyangyangnefu)。 it 关键字是用在匿名函数中,且匿名函数只有一个参数的时候生效。
图像处理ASIC设计方法 笔记24 等价表和标记代换
danxutj的博客
05-26 329
图像处理ASIC设计方法 笔记24 等价表和标记代换
【class12】人工智能初步(人脸识别(3))
fmc121104的博客
05-21 784
配置options参数不仅让我们成功检测到图中的所有面孔,并依次将每个面孔的【位置信息】、【检测质量】与【年龄预测】等信息,记录在ret_data['result']['face_list']这些字典中。检测到的面孔【位置信息】与配置options参数时添加的【检测质量】、【年龄预测】信息,也会依次记录在ret_data['result']['face_list']这些字典中。在 options 字典中,加入一个键为'face_field'的元素,它的值为字符串存储的属性名称。
第N2周:Embeddingbag与Embedding详解
ck1487921366的博客
05-24 759
词嵌入(Word Embedding)是NLP中的一个重要概念,用于将单词映射到一个连续的向量空间中,这样相似的单词在向量空间中距离更近。词嵌入是一种用于表示文本的向量化方法,它将单词或短语映射到一个固定大小的实数向量。例如,“猫”(cat)和“狗”(dog)这样的单词在语义上相似,因此它们的词嵌入向量在向量空间中会相距较近。Word2Vec:一种预测模型,训练目标是通过上下文预测中心词或通过中心词预测上下文词。:一种基于词共现矩阵的词嵌入方法,通过矩阵分解来获取词向量。FastText。
pdfplumberPyPDF2有什么区别
05-25
pdfplumberPyPDF2都是用于处理PDF文件的Python库,但它们的主要区别在于它们的功能和性能方面。 pdfplumber是一个相对较新的库,它提供了更高级的功能,如从PDF文本中提取表格和图像等。它还提供了更易于使用的...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【Python基础】Matplotlib如何绘制多个子图的几种方法 111374
  • 理论加实践,终于把时间序列预测ARIMA模型讲明白了 106377
  • 【Python基础】Python中读取图片的6种方式 56191
  • 【Python基础】matplotlib字体设置看这一篇就够了 54771
  • 【机器学习基础】时间序列测试题的40题,看看你对时间序列的了解水平 54410

最新评论

  • 【深度学习】图像去模糊算法代码实践!

    DTX1112: 请问您解决这个问题了吗?求解

  • 【机器学习】深度剖析 LightGBM vs XGBOOST 哪个更胜一筹

    m0_60455957: lightgbm不需要one hot吧,怎么也用了编码后的训练集

  • 【Python】推荐10个好用到爆的Jupyter Notebook插件,让你效率飞起

    m0_58148067: ModuleNotFoundError: No module named 'notebook.base' 怎么办?

  • 非常全面:72页ChatGPT研究框架(2023)ppt(附下载)

    俄的世界°简单点就好: gpt2023

  • 非常全面:72页ChatGPT研究框架(2023)ppt(附下载)

    qq_51777671: gpt2023

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 什么是扩散模型(Diffusion Models),为什么它们是图像生成的一大进步?
  • 【Python】高大上!5个python高级可视化图表!
  • 清华大学教授:在“既要又要还要”的考评体系之下,大学青年教师怎能不焦虑?...
2024
05月 61篇
04月 83篇
03月 80篇
02月 72篇
01月 68篇
2023年897篇
2022年813篇
2021年1087篇
2020年1179篇
2019年332篇
2018年39篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司辽源网站seo优化哪家好威海外贸网站建设哪家好延边网络营销价格丽江英文网站建设杭州seo多少钱长春外贸网站建设推荐吴忠网络推广报价福州至尊标王哪家好延安设计公司网站价格承德网站优化按天收费价格阜新关键词排名包年推广报价临汾网站建设公司六安网络营销哪家好松原关键词按天扣费多少钱黄山设计公司网站价格遂宁网站优化宿迁关键词排名推荐渭南网站定制报价甘孜网络广告推广哪家好潮州营销网站多少钱渭南网站优化推广报价梅州网站优化按天扣费推荐惠州网站seo优化哪家好诸城优秀网站设计价格商丘网站改版哪家好随州网站优化推广多少钱沧州网站优化排名推荐福田企业网站建设公司淮南SEO按天计费多少钱廊坊网络广告推广哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化