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装饰器 免去调用父类构造函数的麻烦
May 18 Python
python检测lvs real server状态
Jan 22 Python
python中元类用法实例
Oct 10 Python
python基于phantomjs实现导入图片
May 13 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
django模板结构优化的方法
Feb 28 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
Python如何优雅删除字符列表空字符及None元素
Jun 25 Python
python 发送邮件的四种方法汇总
Dec 02 Python
分享一个python的aes加密代码
Dec 22 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 Python
解决python3安装pandas出错的问题
May 20 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将部分内容用星号替换
2020/04/21 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
vue键盘事件点击事件加native操作
2020/07/27 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
Python实现爬取马云的微博功能示例
2019/02/16 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
浅谈Pytorch中的torch.gather函数的含义
2019/08/18 Python
Python内置函数及功能简介汇总
2020/10/13 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
英语系毕业生自荐信
2013/10/31 职场文书
关于赌博的检讨书
2014/01/08 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
说好普通话圆梦你我他演讲稿
2014/09/21 职场文书
场地使用证明模板
2014/10/25 职场文书
三八节祝酒词
2015/08/11 职场文书
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫