使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 递归迭代动态规划「建议收藏」

    递归迭代动态规划「建议收藏」一、定义递归:程序调用自身,从顶部将问题分解,其问题与其子问题是同一概念。通过解决掉所有分解出来的小问题,来解决整个问题。迭代:利用变量的原值推算出变量的下一个值。递归中一定有迭代,但是迭代中不一定有递归。动态规划:通常与递归相反,其从底部开始解决问题。将所有小问题解决掉,进而解决的整个问题。为了节约重复求相同子问题的时间,引入一个数组,把所有子问题的解存于该数组中,动态规划算法是空间换时间的算法。动态规划可以递归地实现,也可以非递归(循环的方法)地实现。运行速度:动态规划>迭代&gt

    2022年10月29日
    0
  • HTML中meta标签的作用与使用

    HTML中meta标签的作用与使用META标签用来描述一个HTML网页文档的属性META标签可分为两大部分:HTTP-EQUIV和NAME变量。HTTP实例HTML代码实例中有一项内容是<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">其作用是指定了当前文档所使用的字符编码为gb2312,也就是中文简体字符。根据这一行代码,浏览器就可以…

    2022年6月1日
    33
  • 删除windows默认共享[通俗易懂]

    删除windows默认共享  Windows2000的缺省安装很容易被攻击者取得账号列表,即使安装了最新的Servicepack也是如此。在Windows2000中有一个缺省共享IPC$,并且还有诸如admin$C$D$等等,而IPC$允许匿名用户(即未经登录的用户)访问,利用这个缺省共享可以取得用户列表。要想防范这些,可将在“管理工具→本地安全策略→安全设置→本地策略→

    2022年4月15日
    43
  • 熟悉这些命令 Linux系统操作原来如此简单

    熟悉这些命令 Linux系统操作原来如此简单

    2021年11月10日
    48
  • 毕业设计 – 题目:基于stm32的智能扫地机器人设计与实现

    1课题背景随着人口老龄化的到来和人民对提升生活品质的需要,人们对在现实生活场景中取代人力的服务机器人有着迫切的需要。同时,机电、自动控制、计算机、传感器等技术的发展也为制造服务机器人提供了技术支持。扫地机器人是服务机器人中技术最成熟和最为广泛使用的机器人。它可以自动的在室内行走,通过刷扫和吸尘将地面上的碎屑吸收进垃圾收集装置中,完成清洁地面的任务,有效的减少了人们清洁地面这种简单重复的家务劳动,节约了劳动力,提高了生活品质。对于许多忙于工作和生的人来说,扫地机器人已经成为家庭必

    2022年4月6日
    94
  • pytorch转tensorrt_pytorch是啥

    pytorch转tensorrt_pytorch是啥报错原因分析涉及到梯度传播的tensor变量不能够直接numpy()转numpy,需要使用:var.detach().numpy()

    2022年8月31日
    0

发表回复

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

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