脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 几个关于python Pdf 技巧的分享

几个关于python Pdf 技巧的分享

2022-10-11 12:14zzxiaoma Python

这篇文章主要介绍了python使用技巧Pdf的详细内容,PyPDF2是一个纯Python的开源库,能够分割或合并PDF文件,也可以裁剪或转换PDF文件中的页面,下面关于文章主题内容将详细介绍,需要的小伙伴可以参考一下

前言:

PyPDF2是一个纯Python的开源库,能够分割或合并PDF文件,也可以裁剪或转换PDF文件中的页面。我们还可以使用PyPDF2查看PDF文件的元信息,对PDF文件进行加密等。

PyPDF2是一个开源的库,因此在使用之前需要先安装。

?
1
pip install PyPDF2

1.读取PDF

?
1
2
3
4
5
6
7
8
9
import PyPDF2
 
reader = PyPDF2.PdfFileReader(open('a.pdf','rb'))
print(reader.getNumPages())
 
print(reader.getIsEncrypted())
print(reader.getDocumentInfo())
page = reader.getPage(8)
print(page.extractText())

首先导入PyPDF2模块,然后以二进制读模式打开a.pdf文件,并将它传递给PdfFileReader类的初始化函数。PdfFileReader的初始化函数会返回一个PdfFileReader类的对象,我们可以使用这个对象来获取PDF文件的信息。

通过getNumPages函数获取pdf的总页数,通过getIsEncrypted函数获取文件是否加密,通过getDocumentInfo函数获取文件的元数据,通过传递下标给getPage函数的方式获取PDF页面,下标从0开始,与Python内置的字符串、列表和元组等保持一致。通过PageObject类的extractText方法提取页面中的文本。从该方法的返回结果来看,提取PDF文本的效果并不理想。

2.删除pdf的某些页

思路:PyPDF2并不能直接编辑PDF文件,但是我们可以利用PyPDF2从一个PDF文档拷贝需要的页面到另一个PDF文档,通过这种迂回的方式实现编辑PDF的功能。例如删掉a.pdf中的第一页

?
1
2
3
4
5
6
7
8
9
import PyPDF2
 
reader = PyPDF2.PdfFileReader(open('a.pdf','rb'))
output = PyPDF2.PdfFileWriter()
for i in range(1,reader.getNumPages()):
    output.addPage(reader.getPage(i))
outputStream = open ("b.pdf","wb")
output.write(outputStream)
outputStream.close()

3.旋转页面

PageObject类中有部分方法可以修改PDF页面,其中rotateClockwiserotateCounterClockwise方法用来旋转页面。这两个方法只接受一个参数,且参数取值必须是90的倍数,表示旋转多少度。

?
1
2
3
4
5
6
7
8
9
10
import PyPDF2
 
reader = PyPDF2.PdfFileReader(open('a.pdf','rb'))
output = PyPDF2.PdfFileWriter()
page = reader.getPage(0)
page.rotateClockwise(180)
output.addPage(page)
outputStream = open ("b.pdf","wb")
output.write(outputStream)
outputStream.close()

4.合并pdf

?
1
2
3
4
5
6
7
8
9
10
11
12
13
from PyPDF2 import PdfFileMerger
 
merger = PdfFileMerger()
 
a = open("a.pdf",'rb')
b = open("b.pdf",'rb')
c = open("c.pdf",'rb')
 
merger.append(fileobj = a,pages = (0,3))
merger.merge(position=2,fileobj=b,pages=(0,1))
merger.append(c)
output = open("d.pdf","wb")
merger.write(output)

append方法通过fileobj参数确定要添加的PDF文件,通过pages参数指定要将哪些PDF页面添加到新的PDF文件中,并将要添加的页面添加到merger对象的末尾。merge方法相对于append方法,增加了position参数,我们可以通过position参数指定页面插人的位置。append方法和merge方法的pages参数非常灵活,该参数是一个三元组(start,stop[,step]),分别表示起点、终点和步长。我们可以通过该参数指定合并PDF文件中的页面。

到此这篇关于python使用技巧Pdf的详细内容介绍的文章就介绍到这了,更多相关python使用技巧Pdf介绍内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.51cto.com/u_3764469/5039076

延伸 · 阅读

精彩推荐
  • Python在Python中使用__slots__方法的详细教程

    在Python中使用__slots__方法的详细教程

    这篇文章主要介绍了在Python中使用__slots__方法的详细教程,__slots__方法是Python的一个重要内置类方法,代码基于Python2.x版本,需要的朋友可以参考下 ...

    廖雪峰4012020-06-15
  • Python说说如何遍历Python列表的方法示例

    说说如何遍历Python列表的方法示例

    这篇文章主要介绍了如何遍历Python列表的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    deniro9612021-05-26
  • PythonPython中对象的比较操作==和is区别详析

    Python中对象的比较操作==和is区别详析

    这篇文章主要给大家介绍了关于Python中对象的比较操作==和is区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学...

    江湖十年11402021-09-04
  • Python一篇文章带你了解Python的迭代知识

    一篇文章带你了解Python的迭代知识

    本文基于Python基础,介绍了Python 迭代的使用。任何可迭代对象都可以作用于for循环,包括自定义的数据类型,只要符合迭代条件,就可以使用for循环。通过...

    Go语言进阶学习5692021-03-21
  • PythonPython之多进程与多线程的使用

    Python之多进程与多线程的使用

    这篇文章主要介绍了Python之多进程与多线程的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    我不是秃头哆唻咪5822021-09-08
  • PythonPython Selenium 之关闭窗口close与quit的方法

    Python Selenium 之关闭窗口close与quit的方法

    今天小编就为大家分享一篇Python Selenium 之关闭窗口close与quit的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    HeatDeath5112021-05-28
  • Pythonpython tkinter Entry控件的焦点移动操作

    python tkinter Entry控件的焦点移动操作

    这篇文章主要介绍了python tkinter Entry控件的焦点移动操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...

    bill_zhou20089862021-11-10
  • Pythonpython接口测试环境搭建过程详解

    python接口测试环境搭建过程详解

    这篇文章主要介绍了python接口测试环境搭建过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...

    拉努斯石7392020-06-30