工作中可能会涉及处理pdf文件,PyPDF2就是这样一个库, 使用它可以轻松的处理pdf文件,它提供了读、写、分割、合并、文件转换等多种操作。官方地址:http://mstamy2.github.io/PyPDF2/

安装

  1. RPM式系统(Redhat、CentOS)
pip install pypdf2
  1. DEB式系统(Debian、Ubuntu)以下任一
pip install pypdf2
apt install python-pypdf2
  1. Windows
pip install pypdf2

使用

PyPDF2 包含了 PdfFileReader PdfFileMerger PageObject PdfFileWriter 四个常用的主要 Class。

简单读写

from PyPDF2 import PdfFileReader, PdfFileWriter
readFile = 'read.pdf'
writeFile = 'write.pdf'
# 获取一个 PdfFileReader 对象
pdfReader = PdfFileReader(open(readFile, 'rb'))
# 获取 PDF 的页数
pageCount = pdfReader.getNumPages()
print(pageCount)
# 返回一个 PageObject
page = pdfReader.getPage(i)
# 获取一个 PdfFileWriter 对象
pdfWriter = PdfFileWriter()
# 将一个 PageObject 加入到 PdfFileWriter 中
pdfWriter.addPage(page)
# 输出到文件中
pdfWriter.write(open(writeFile, 'wb'))

合并分割 PDF

from PyPDF2 import PdfFileReader, PdfFileWriter
def split_pdf(infn, outfn):pdf_output = PdfFileWriter()pdf_input = PdfFileReader(open(infn, 'rb'))# 获取 pdf 共用多少页page_count = pdf_input.getNumPages()print(page_count)# 将 pdf 第五页之后的页面,输出到一个新的文件for i in range(5, page_count):pdf_output.addPage(pdf_input.getPage(i))pdf_output.write(open(outfn, 'wb'))
def merge_pdf(infnList, outfn):pdf_output = PdfFileWriter()for infn in infnList:pdf_input = PdfFileReader(open(infn, 'rb'))# 获取 pdf 共用多少页page_count = pdf_input.getNumPages()print(page_count)for i in range(page_count):pdf_output.addPage(pdf_input.getPage(i))pdf_output.write(open(outfn, 'wb'))
if __name__ == '__main__':infn = 'infn.pdf'outfn = 'outfn.pdf'split_pdf(infn, outfn)

其他命令
如果是要修改一个已有的 pdf 文件,可以将 reader 的页面添加到 writer 中:

pdfWriter.appendPagesFromReader(reader)

添加书签:

pdfWriter.addBookmark(title, pagenum, parent=parent)

Python处理pdf文件库 - PyPDF2详解相关推荐

  1. python实现pdf转word详解_手把手|20行Python代码教你批量将PDF文件转为Word格式(包教包会)...

    在日常工作或学习中,经常会遇到这样的无奈: "小任,你把这个PDF中的文件码出来发我" 倒霉,2M的PDF12点也完不了啊! 很多时候在学习时发现许多文档都是PDF格式,PDF格式 ...

  2. Python中的高级数据结构详解

    这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...

  3. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  4. python的爱心曲线公式_六行python代码的爱心曲线详解

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  5. python编程语法大全-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货 每天 ...

  6. python编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  7. python编程if语法-Python编程入门基础语法详解经典

    原标题:Python编程入门基础语法详解经典 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_number = ...

  8. python编程语法-Python编程入门——基础语法详解(经典)

    今天小编给大家带来Python编程入门--基础语法详解.温馨提示: 亮点在最后! 在这里还是要推荐下我自己建的Python开发学习群:301056051,群里都是学Python开发的,如果你正在学习P ...

  9. 用python绘制漂亮的图形-用python绘制图形的实例详解

    1.环境系统:windows10 python版本:python3.6.1 使用的库:matplotlib,numpy 2.numpy库产生随机数几种方法import numpy as npnumpy ...

最新文章

  1. 带你了解DDoS攻击的原理,让你轻松学会DDoS攻击原理及防护措施
  2. Linux 中yum的配置
  3. IO多路复用之poll总结
  4. 使用composer下载依赖包下载失败的解决方法
  5. 罗永浩将重返高科技行业创业 将涉足AR/VR/MR领域
  6. python123测验答案第二周温度转换二_python123练习题
  7. CSS3动画框架 Animate.css
  8. Linux下查看系统版本号信息的方法(转)
  9. estore简版商城问题总结
  10. excel如何把顺序倒过来_Excel中表格进行颠倒顺序的操作方法
  11. Java-事务的传播特性和隔离级别
  12. mac 下搭建paly framework体验(环境搭建)
  13. 面试官:IoC 和 DI 有什么区别?
  14. 最好的文学素材网站有哪些?
  15. 路的选择与人生的哲思──读《未选择的路》
  16. ios -静默方式发送邮件
  17. shell脚本进入指定目录
  18. SQL Server 2008 R2 企业版 MSDN原版
  19. RabbitVCS:ubuntu下svn可视化工具的安装和使用
  20. D-ID生成式人工智能视频合成技术,将原创视频内容变得唾手可得

热门文章

  1. Spring boot集成spring-boot-starter-data-jpa环境搭建
  2. nodeJs配置相关以及JSON.parse
  3. nginx 实现mysql的负载均衡【转】
  4. iOS 10 的一个重要更新-开发 iMessage 的第三方插件
  5. android 高清壁纸设置慢
  6. JavaScript程序开发(十五)—函数的属性和方法
  7. MFC 问题集(4)CListCtrl
  8. python paramiko sftp_python paramiko (ssh,sftp)
  9. logrotate测试_使用 logrotate 对 apache/nginx 日志切割
  10. migo获取header sap_Adjust Stock(MI06, MI07, MIGO)