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实现简易端口扫描器代码实例
Mar 15 Python
python在每个字符后添加空格的实例
May 07 Python
Python if语句知识点用法总结
Jun 10 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
python3 打印输出字典中特定的某个key的方法示例
Jul 06 Python
Python 导入文件过程图解
Oct 15 Python
Python Celery多队列配置代码实例
Nov 22 Python
Python post请求实现代码实例
Feb 28 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
python 写一个性能测试工具(一)
Oct 24 Python
python中PyQuery库用法分享
Jan 15 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中用foreach来操作数组的代码
2011/07/17 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php框架知识点的整理和补充
2021/03/01 PHP
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
Linux下编译安装MySQL-Python教程
2015/02/02 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
Django REST framework内置路由用法
2019/07/26 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
python爬虫请求头的使用
2020/12/01 Python
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
单身联谊活动方案
2014/01/29 职场文书
整改报告怎么写
2014/11/06 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python
详解nginx location指令
2022/01/18 Servers
JavaScript的Set数据结构详解
2022/02/18 Javascript
redis lua限流算法实现示例
2022/07/15 Redis