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模拟登陆阿里妈妈生成商品推广链接
Apr 03 Python
python实现中文转换url编码的方法
Jun 14 Python
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
利用aardio给python编写图形界面
Aug 21 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
python for和else语句趣谈
Jul 02 Python
Python实现制度转换(货币,温度,长度)
Jul 14 Python
wxpython+pymysql实现用户登陆功能
Nov 19 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
python中id函数运行方式
Jul 03 Python
python上selenium的弹框操作实现
Jul 13 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 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采用curl实现伪造IP来源的方法
2014/11/21 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
PHP实现的一致性哈希算法完整实例
2015/11/14 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
javascript常用函数(2)
2015/11/05 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
angular过滤器实现排序功能
2017/06/27 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
python实现五子棋游戏
2019/06/18 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python怎么判断素数
2020/07/01 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
上海期货面试题
2014/01/31 面试题
公司人事任命通知
2015/04/20 职场文书
老员工辞职信范文
2015/05/12 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
Linux中sftp常用命令整理
2022/06/28 Servers