前言:
PyPDF2是一个纯Python的开源库,能够分割或合并PDF文件,也可以裁剪或转换PDF文件中的页面。我们还可以使用PyPDF2查看PDF文件的元信息,对PDF文件进行加密等。
PyPDF2是一个开源的库,因此在使用之前需要先安装。
pip install PyPDF2
1.读取PDF
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中的第一页
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页面,其中rotateClockwise
和rotateCounterClockwise
方法用来旋转页面。这两个方法只接受一个参数,且参数取值必须是90的倍数,表示旋转多少度。
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
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介绍内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!