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


相关推荐

  • Java 读取某个目录下所有文件、文件夹

    Java 读取某个目录下所有文件、文件夹

    2021年6月12日
    83
  • 卡方检验,U检验,t检验,F检验

    卡方检验,U检验,t检验,F检验卡方检验:主要用于等级资料。t检验:适用于计量资料、正态分布、方差具有齐性的两组间小样本比较。包括配对资料间、样本与均数间、两样本均数间比较三种,三者的计算公式不能混淆。也可以这样理解主要是用于小样本(样本容量小于30)的两个平均值差异程度的检验方法。U检验:检验应用条件与t检验基本一致,只是当大样本时用U检验,而小样本时则用t检验,t检验可以代替U检验。t检验和就是统计量为t,u的假…

    2022年6月19日
    47
  • 值得推荐的Idea十几大优秀插件

    值得推荐的Idea十几大优秀插件最近,闲来无事,为了改变一下枯燥的编程环境,特地搜寻了下有助提升代码功力的插件,够装逼,够狂,拽,屌~绚丽的画面,多彩的跳动,让你区别其他程序猿。产品,测试,开发看到你的界面,眼睛都会发光~算了,我实在是编不下去,自己去体验吧~PS:☆半星★一星主要是以狂拽屌指数来排名12、Stackoverflow这个插件其实是最实用的插件,程序猿遇到的问题…

    2022年6月16日
    128
  • 关于charles抓包https乱码的设置[通俗易懂]

    关于charles抓包https乱码的设置[通俗易懂]关于charles抓包https乱码的设置charles安装本地证书首先我们点击help->SSLProxying->InstallCharlesRootCertificate安装证书。默认安装证书是不受信任的,双击打开证书,打开信任选择项,将使用此证书时这是为始终信任。安装手机证书点击help->SSLProxying->Inst…

    2022年6月4日
    99
  • Android FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题

    Android FileProvider配置报错android.content.pm.ProviderInfo.loadXmlMetaData问题

    2021年10月1日
    88
  • Mysql 多表联合查询效率分析及优化

    Mysql 多表联合查询效率分析及优化1.多表连接类型1.笛卡尔积(交叉连接)在MySQL中可以为CROSSJOIN或者省略CROSS即JOIN,或者使用’,’如:SELECT*FROMtable1CROSSJOINtable2SELECT*FROMtable1JOINtable2SELECT*FROMtable1,table2由于其返回的结果为被连接的两…

    2022年4月28日
    35

发表回复

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

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