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命名空间详解
Aug 18 Python
Python中实现两个字典(dict)合并的方法
Sep 23 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
Python中计算三角函数之cos()方法的使用简介
May 15 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
python爬取酷狗音乐排行榜
Feb 20 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
常用python爬虫库介绍与简要说明
Jan 25 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
BeautifulSoup中find和find_all的使用详解
Dec 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
ThinkPHP安装和设置
2015/07/27 PHP
javascript 24小时弹出一次的代码(利用cookies)
2009/09/03 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
python生成随机验证码(中文验证码)示例
2014/04/03 Python
Python 中的with关键字使用详解
2016/09/11 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
python仿evething的文件搜索器实例代码
2019/05/13 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python数据挖掘需要学的内容
2019/06/23 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
python不同版本的_new_不同点总结
2020/12/09 Python
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
HTML5的结构和语义(2):结构
2008/10/17 HTML / CSS
文秘应聘自荐书范文
2014/02/18 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
放弃遗产继承公证书
2015/01/26 职场文书
2016新年致辞
2015/08/01 职场文书
办公用品管理制度
2015/08/04 职场文书
Element实现动态表格的示例代码
2021/08/02 Javascript
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS