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批量生成本地ip地址的方法
Mar 23 Python
Python编程之string相关操作实例详解
Jul 22 Python
Python实现矩阵转置的方法分析
Nov 24 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Django实现跨域的2种方法
Jul 31 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
python如何支持并发方法详解
Jul 25 Python
python在地图上画比例的实例详解
Nov 13 Python
python 实现有道翻译功能
Feb 26 Python
python实现过滤敏感词
May 08 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 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的特殊设置
2006/10/09 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
ClearTimeout消除闪动实例代码
2016/02/29 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
深入理解vue Render函数
2017/07/19 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
Pandas读取并修改excel的示例代码
2019/02/17 Python
python try 异常处理(史上最全)
2019/03/07 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
市场营销调查计划书
2014/05/02 职场文书
初中同学会活动方案
2014/08/22 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
优秀创业计划书分享
2019/07/19 职场文书
数据库连接池
2021/04/06 MySQL
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
Python anaconda安装库命令详解
2021/10/16 Python