使用PyPDF2模块处理PDF文件通用方法技巧

使用PyPDF2模块处理PDF文件通用方法技巧基本概念:PDF和Word文档是二进制文件,除了文本之外还保存字体,颜色,布局等信息。处理PDF文件,使用PyPDF2模块,PyPDF2不能从PDF文档中提取图像、图表或其他媒体,但可提取文本,作为字符串返回。  读取PDF文件步骤:首先以读二进制模式打开PDF文件,然后将打开文件File对象传递给PyPDF2.PdfFileReader()函数,例如: …

大家好,又见面了,我是你们的朋友全栈君。

  1. 基本概念:PDF和Word文档是二进制文件,除了文本之外还保存字体,颜色,布局等信息。
  2. 处理PDF文件,使用PyPDF2模块,PyPDF2不能从PDF文档中提取图像、图表或其他媒体,但可提取文本,作为字符串返回。
       读取PDF文件步骤: 首先以读二进制模式打开PDF文件,然后将打开文件File对象传递给PyPDF2.PdfFileReader()函数,例如:
       pdf=open(r’C:/Users/fmz/Desktop/rotate.pdf’,‘rb’)
       pdfreader=PyPDF2.PdfFileReader(pdf)
       读取的文档的总页数保存在PdfFileReader对象的numPages属性中,使用pdfreader.numPages可得总页数
       从一页中提取文本,需要先取得Page对象,使用pdfreader.getPage(传入页码顺序,从0开始)。取得Page对象后调用它的
       extractText()方法,即Page.extractText()则返回该页文本的字符串(文本提取并不完美,有时会缺失一些文本)
  3. 解密PDF :所有的PdfFileReader对象都有一个isEncrypted属性,如果加密返回True否则返回False。在文件用正确的口令
       解密之前,尝试调用函数来读取文件会返回错误。解密PDF使用pdfreader.decrypt(‘口令字符串’)函数,提供正确的口令返回1
       否则返回0。
  4. 创建PDF:使用PdfFileWriter对象创建PDF例如pdfwriter=PyPDF2.PdfFileWriter(),但PyPDF2模块不可以利用其将任何文
       本写入PDF,该对象仅限从其他PDF中拷贝页面、旋转页面、重叠页面以及加密文件。PyPDF2模块不允许直接编辑PDF,必须
       创建一个新的PDF,其一般步骤为:
       1) 打开一个或多个已有的PDF得到PdfFileReader对象;
       2) 创建一个新的PdfFileReader对象;
       3) 将页面从PdfFileReader对象拷贝到PdfFileWriter对象中;
       4) 最后利用PdfFileWriter对象写入输出的PDF。
       实际生成文件需调用PdfFileWriter对象的write()方法。write()方法接受一个普通的以写二进制模式?打开的File对象。
  5. 拷贝页面:得到PdfFileReader对象后,在其上调用getPage()取得Page对象,然后将Page对象传递给PdfFileWriter对象的
        addPage()方法,例如pdfwriter.addPage(page对象),在拷贝页面完成后,向PdfFileWriter对象的write()方法传入一个File
        对象,例如使用下列语句即可实现新PDF的写入。
         pdfout=open(r’combinedminutes.pdf’,‘wb’)
         pdfwriter.write(pdfout)
         pdfout.close()
  6. 旋转页面:对Page对象使用rotateClockwise()(顺时针旋转)和rotateCounterClockwise()(逆时针旋转)方法可使PDF文
        档页面旋转90度的整数倍,向这些方法传入90,180,270就可以了。例如Page.rotateClockwise(90)将页面顺时针旋转90度。
  7. 叠加页面:PyPDF2模块可将一页的内容叠加到另一页上实现在页面上添加公司标志,时间戳或水印等。对Page对象调用
       mergePage(叠加的Page对象)方法可实现page的叠加,例如使用FirstPage.mergePage(pdfreader.getPage(0))语句可实现
        将pdfreader对象的第一页叠加到FirstPage页上。
  8. 加密PDF:在调用write()方法保存文件之前,对PdfFileWriter对象调用encrypt(‘口令字符串’)方法可实现对文档的加密。PDF
       文档可以有一个用户口令(允许查看该PDF)和一个拥有者口令(允许设置打印、注释、提取文本和其他功能的许可)。用户
        口令和拥有者口令分别是encrypt()的第一个和第二个参数,如果只传入一个字符串,那它将作为两个口令。例如:
        pdfwriter.encrypt(‘swordfish’)
        open(r’combinedminutes.pdf’,‘wb’)
        pdfwriter.write(pdfout)
        pdfout.close()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152406.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【转载】C# 理解泛型

    【转载】C# 理解泛型

    2021年11月20日
    48
  • golang 2021.8.3 激活码【最新永久激活】

    (golang 2021.8.3 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S3…

    2022年3月26日
    123
  • navicat premium15激活码【永久激活】「建议收藏」

    (navicat premium15激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

    2022年3月21日
    191
  • c语言中char类型转int类型「建议收藏」

    c语言中char类型转int类型「建议收藏」前言在九度oj做acm的时候,经常会遇到了char类型和int类型相互转化的问题,这里进行一下总结。今后,可能会多次更新博客,因为半年做了很多总结,但是都是保存在word文档上了,现在开始慢慢向CSDN博客转移。问题类型char型数字转换为int型转换方法a[i]-‘0’参考程序#include#include#includei

    2022年10月2日
    2
  • 基于pytorch卷积人脸表情识别–毕业设计「建议收藏」

    基于卷积神经网络的人脸表情识别前言毕业设计内容介绍卷积神经网络的设计卷积网络的模型卷积池化过程详细说明第一层卷积池化过程第二层卷积池化过程第三层卷积池化过程全连接层过程模型的训练过程卷积与池化原理模型如何训练模型的评估指标训练结果分析通过训练曲线分析通过混淆矩阵分析效果通过摄像头识别表情设计流程效果演示部分代码展示总结前言这篇文章记录一下我本科毕业设计的内容。我的课题是人脸表情识别,本来最开始按照历届学长的传统是采用MATLAB用传统的机器学习方法来实现分类的。但是鉴于我以前接触过一点点深度学习的内容,

    2022年4月11日
    161
  • 激光slam认知_激光slam的优缺点

    激光slam认知_激光slam的优缺点slam介绍什么是slam?SLAM(simultaneouslocalizationandmapping),也称为CML(ConcurrentMappingandLocalization),即时定位与地图构建,或并发建图与定位。问题可以描述为:将一个机器人放入未知环境中的未知位置,是否有办法让机器人一边逐步描绘出此环境完全的地图所谓完全的地图(aconsistent…

    2022年8月23日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号