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 相关文章推荐
wxpython中利用线程防止假死的实现方法
Aug 11 Python
Python中List.count()方法的使用教程
May 20 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
Python数据分析之获取双色球历史信息的方法示例
Feb 03 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python 用opencv调用训练好的模型进行识别的方法
Dec 07 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
Python选择网卡发包及接收数据包
Apr 04 Python
Python处理mysql特殊字符的问题
Mar 02 Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 Python
解决Keras 自定义层时遇到版本的问题
Jun 16 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
JS判断网页广告是否被浏览器拦截过滤的代码
2015/04/05 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
Python3 读取Word文件方式
2020/02/13 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
2020/06/22 Python
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
最新创业融资计划书
2014/01/19 职场文书
主管会计岗位责任制
2014/02/10 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
项目建议书怎么写
2014/05/15 职场文书
学校远程教育工作总结
2015/08/11 职场文书
如何写好竞聘报告
2019/04/03 职场文书
创业计划书介绍
2019/04/24 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
Go语言设计模式之结构型模式
2021/06/22 Golang