从PDF提取文本
import PyPDF2,os
os.chdir('D:/python/python编程快速上手-让繁琐的工作自动化/处理PDF')
pdfObj=open('meetingminutes.pdf','rb')
pdfReader=PyPDF2.PdfFileReader(pdfObj)
pageNum=pdfReader.numPages
pageObj=pdfReader.getPage(1)
txt=pageObj.extractText()
解密PDF
import PyPDF2,os
os.chdir('D:/python/python编程快速上手-让繁琐的工作自动化/处理PDF和word文档')
pdfReader=PyPDF2.PdfFileReader(open('encrypted.pdf','rb'))
x=pdfReader.isEncrypted
y=pdfReader.decrypt('rosebud')
pageObj=pdfReader.getPage(0)
PdfFileReader 对象的属性和方法
属性和方法 | 描述 | 返回数据类型 |
---|
getDocumentInfo() | 检索 PDF 文件的文档信息 | 字典 |
getNumPages()或numPages | 计算此 PDF 文件中的页数 | int |
getOutlines(node = None,outline = None,) | 检索文档中出现的文档大纲 | 目标嵌套列表 |
getPage(pageNumber) | 从这个 PDF 文件中检索指定编号的页面 | Page对象 |
getPageLayout() | 获取页面布局 | str:当前正在使用的页面布局,如果未指定None |
getPageMode() | 获取页面模式 | str:当前正在使用的页面模式,如果未指定None |
getPageNumber(pageObject) | 检索给定 pageObject 处于的页码 | int |
isEncrypted | 显示 PDF 文件是否加密的属性 | 加密返回True,未加密返回False |
decrypt(password) | 解密PDF文件 | 解密成功返回1,反之返回0 |
创建PDF
PdfFileWriter对象
属性和方法 | 参数 | 描述 | 返回值 | 返回数据类型 | 错误 |
---|
addBlankPage(width = None,height = None ) | width(float)–以默认用户空间单位表示的新页面的宽度。 height(float)–以默认用户空间单位表示的新页面的高度。 | 将空白页附加到此PDF文件并返回。如果未指定页面大小,请使用最后一页的大小。 | 新添加的页面 | PageObject | 引发PageSizeNotDefinedError:如果未定义宽度和高度,并且上一页不存在。 |
addPage(page) | (PageObject)–要添加到文档的页面 | 将页面添加到此PDF文件。该页面通常是从PdfFileReader实例获取的 | | | |
insertPage(page,index = 0 ) | page(PageObject)–要添加到文档的页面。此参数应为的实例PageObject。index(int)–插入页面的位置。 | 在此PDF文件中插入页面。该页面通常是从PdfFileReader实例获取的 | | | |
insertBlankPage(width = None,height = None,index = 0 ) | width(float)–以默认用户空间单位表示的新页面的宽度。height(float)–以默认用户空间单位表示的新页面的高度。index(int)–添加页面的位置。 | 将空白页插入此PDF文件并返回。如果未指定页面大小,使用最后一页的大小 | 新添加的页面 | PageObject | 引发PageSizeNotDefinedError:如果未定义宽度和高度,并且上一页不存在。 |
encrypt(user_pwd,owner_pwd = None,use_128bit = True ) | user_pwd(str)–“用户密码”,允许使用提供的限制打开和阅读PDF文件。owner_pwd(str)–“所有者密码”,它允许无限制地打开PDF文件。默认情况下,所有者密码与用户密码相同。use_128bit(bool)–是否使用128位加密的标志。如果为false,将使用40位加密。默认情况下,此标志为开。 | 使用PDF Standard加密处理程序对该PDF文件进行加密。 | | | |
将文件中的页面添加到新文件
import PyPDF2,os
os.chdir('D:/python/python编程快速上手-让繁琐的工作自动化/处理PDF和word文档')
pdfWrite=PyPDF2.PdfFileWriter()
def addpage(s):
pdfReader=PyPDF2.PdfFileReader(open(s,'rb'))
for pageNum in range(pdfReader.getNumPages()):
PageObj=pdfReader.getPage(pageNum)
pdfWrite.addPage(PageObj)
addpage('meetingminutes.pdf')
addpage('meetingminutes2.pdf')
pdfFile=open('combinedminutes.pdf','wb')
pdfWrite.write(pdfFile)
pdfFile.close()
加密PDF
import PyPDF2,os
os.chdir('D:/python/python编程快速上手-让繁琐的工作自动化/处理PDF和word文档')
pdfReader=PyPDF2.PdfFileReader(open('meetingminutes.pdf','rb'))
pdfWrite=PyPDF2.PdfFileWriter()
for pageNum in range(pdfReader.getNumPages()):
pdfWrite.addPage(pdfReader.getPage(pageNum))
pdfWrite.encrypt('123456')
pdfFile=open('encrypt_test.pdf','wb')
pdfWrite.write(pdfFile)
pdfFile.close()
编辑PDF
Page对象
属性和方法 | 参数 | 描述 |
---|
extractText() | 无 | 按照在内容流中提供的顺序找到所有文本绘制命令,然后提取文本。这对于某些PDF文件效果很好,但对其他PDF文件效果不佳,具体取决于所使用的生成器 |
rotateClockwise(angle) | angle(int)–旋转页面的角度。必须以90度为增量 | 将页面顺时针旋转90度 |
rotateCounterClockwise(angle) | angle(int)–旋转页面的角度。必须以90度为增量 | 将页面逆时针旋转90度 |
mergePage(page2 ) | page2(PageObject)–要合并到此页面中的页面,应该是的实例PageObject | 将两个页面的内容流合并为一个 |
scale(sx, sy) | sx(float)–水平轴上的缩放比例。sy(float)–垂直轴上的缩放比例。 | 更新页面大小,以给定的因子缩放页面 |
scaleBy(factor) | factor(float)–缩放因子(对于X和Y轴) | 更新页面大小,可以按给定因子缩放页面 |
scaleTo(width, height) | width(float)–新的宽度。height(float)–新的高度。 | 更新页面大小,将页面缩放到指定的尺寸 |
旋转页面
import PyPDF2,os
os.chdir('D:/python/python编程快速上手-让繁琐的工作自动化/处理PDF和word文档')
pdfReader=PyPDF2.PdfFileReader(open('meetingminutes.pdf','rb'))
page=pdfReader.getPage(0)
page.rotateClockwise(90)
pdfWrite=PyPDF2.PdfFileWriter()
pdfWrite.addPage(page)
pdfFile=open('Rotate_test.pdf','wb')
pdfWrite.write(pdfFile)
pdfFile.close()
叠加页面
import PyPDF2,os
os.chdir('D:/python/python编程快速上手-让繁琐的工作自动化/处理PDF和word文档')
pdfReader=PyPDF2.PdfFileReader(open('meetingminutes.pdf','rb'))
page=pdfReader.getPage(0)
pdfWaterMarkReader=PyPDF2.PdfFileReader(open('watermark.pdf','rb'))
page.mergePage(pdfWaterMarkReader.getPage(0))
pdfWrite=PyPDF2.PdfFileWriter()
pdfWrite.addPage(page)
pdfFile=open('meragePage_test.pdf','wb')
pdfWrite.write(pdfFile)
pdfFile.close()