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 相关文章推荐
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
不到20行代码用Python做一个智能聊天机器人
Apr 19 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
Python操作Mongodb数据库的方法小结
Sep 10 Python
python生成任意频率正弦波方式
Feb 25 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
django日志默认打印request请求信息的方法示例
May 17 Python
selenium+python实现基本自动化测试的示例代码
Jan 27 Python
pytorch 使用半精度模型部署的操作
May 24 Python
PyTorch device与cuda.device用法
Apr 03 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运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
深入PHP数据加密详解
2013/06/18 PHP
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
PHP判断当前使用的是什么浏览器(推荐)
2019/10/27 PHP
javascript void(0)的妙用
2009/10/21 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
vue的事件绑定与方法详解
2017/08/16 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
使用Python对Excel进行读写操作
2017/03/30 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
社区交通安全实施方案
2014/03/22 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书