Python PyPDF2模块安装使用解析


Posted in Python onJanuary 19, 2020

这篇文章主要介绍了Python PyPDF2模块安装使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

PyPDF2模块主要的功能是分割或合并PDF文件,裁剪或转换PDF文件中的页面。

0、安装PyPDF2的模块

pip install PyPDF2

1、常用的函数

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time  : 2020/1/15 13:38
# @Author : suk
# @File  : pyxl.py
# @Software: PyCharm
import PyPDF2

reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb'))
print(reader.getNumPages()) # 获取pdf总页数
print(reader.isEncrypted) # 判断是否有加密
page = reader.getPage(4) # 获取第四页
print(page.extractText()) # 获取第四页的内容
print(reader.getDocumentInfo()) # 获取PDF元信息,即创建时间,作者,标题等

2、读取PDF文件,取指定页数,写入到硬盘上的示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import PyPDF2

reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb'))

output = PyPDF2.PdfFileWriter()

output.addPage(reader.getPage(1))
output.addPage(reader.getPage(4))
output.addPage(reader.getPage(5))
print(output.getNumPages()) # 获取写入页的总页数

output.encrypt('123456')
outputStream = open('PyPDF2-output.pdf', 'wb')
output.write(outputStream)
outputStream.close()

3、读取PDF某一页,旋转180度后,写入到新的PDF文件的示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import PyPDF2

reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb'))

page = reader.getPage(0) # 获取第0页
page.rotateClockwise(180) # 旋转180度

writer = PyPDF2.PdfFileWriter() # 创建PDF写入的对象
writer.addPage(page)

outputStream = open('rotate-page-test.pdf', 'wb') # 创建一个PDF文件
writer.write(outputStream) # 往文件写入PDF数据
outputStream.close() # 写入流

4、PDF增加水印的示例

注意:水印模板可以利用WORD文档写好文字,转为PDF即可

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import PyPDF2

reader = PyPDF2.PdfFileReader(open('linux.pdf', 'rb')) # 增加水印的原文件

watermark = PyPDF2.PdfFileReader(open('水印模板.pdf', 'rb')) # 水印的模板

writer = PyPDF2.PdfFileWriter() # 写入PDF的对象

for i in range(reader.getNumPages()):
  page = reader.getPage(i)
  page.mergePage(watermark.getPage(0)) # 将原文件与水印模板合并
  writer.addPage(page) # 增加到写入对象中

outputStream = open('watermark-test-linux.pdf', 'wb') # 打开一个写入硬盘的文件对象
writer.write(outputStream) # 将合并好的数据,写入硬盘中
outputStream.close() # 关闭文件句柄

测试效果

Python PyPDF2模块安装使用解析

5、合并多个指定的PDF文件的示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from PyPDF2 import PdfFileMerger

merger = PdfFileMerger() # 创建一个合并的对象

input1 = open('01PDF.pdf', 'rb')
input2 = open('02PDF.pdf', 'rb')
input3 = open('03PDF.pdf', 'rb')

merger.append(fileobj=input1, pages=(0, 3)) # 合并文件1的0到3页
merger.merge(position=2, fileobj=input2, pages=(0, 1)) # 合并文件2的0到1页
merger.append(fileobj=input3) # 合并文件的所有页

output = open('document-output.pdf', 'wb') # 保存硬盘上
merger.write(output) # 写入到硬盘上
output.close() # 关闭文件句柄

6、批量合并指定目录的PDF文件的示例

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import PyPDF2
import os
import glob

def get_all_pdf_files(path):
  """获取指定目录的所有pdf文件名"""
  all_pdfs = glob.glob('{0}/*.pdf'.format(path))
  all_pdfs.sort(key=str.lower) # 排序
  return all_pdfs

def main():
  path = os.getcwd()
  all_pdfs = get_all_pdf_files(path)
  if not all_pdfs:
    raise SystemExit('没有可用的PDF类型文件')

  merger = PyPDF2.PdfFileMerger()

  first_obj = open(all_pdfs[0], 'rb') # 打开第一个PDF文件
  merger.append(first_obj) # 增加到合并的对象中

  file_objs = []
  for pdf in all_pdfs[1:]: # 读取所有的文件对象
    file_objs.append(open(pdf, 'rb'))

  for file_obj in file_objs:
    reader = PyPDF2.PdfFileReader(file_obj)
    merger.append(fileobj=file_obj, pages=(1, reader.getNumPages()))

  outputStream = open('merge-pdfs.pdf', 'wb')
  merger.write(outputStream)
  outputStream.close()
  for file_obj in file_objs: # 批量关闭文件句柄
    file_obj.close()

if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
python版本的读写锁操作方法
Apr 25 Python
python 类详解及简单实例
Mar 24 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
python写一个md5解密器示例
Feb 23 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
Django app配置多个数据库代码实例
Dec 17 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
基于Python的Jenkins的二次开发操作
May 12 Python
详解python中各种文件打开模式
Jan 19 #Python
python opencv如何实现图片绘制
Jan 19 #Python
python实现加密的方式总结
Jan 19 #Python
TensorFlow tensor的拼接实例
Jan 19 #Python
python通过opencv实现图片裁剪原理解析
Jan 19 #Python
Python 一行代码能实现丧心病狂的功能
Jan 18 #Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 #Python
You might like
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
JavaScript触发器详解
2007/03/10 Javascript
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
pyenv命令管理多个Python版本
2017/03/26 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
Python对象与引用的介绍
2019/01/24 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
小学教研工作制度
2014/01/15 职场文书
员工薪酬激励方案
2014/06/13 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
党支部半年考察意见
2015/06/01 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
Redis 限流器
2022/05/15 Redis