python 入门对PDF的操作 ,旋转,加密,解密,重叠,合并,读取文字。

python 入门对PDF的操作

  • 以下文件中都需要导入 import PyPDF2 的包,可以实现识别pdf 中的文字,但是可能有错别字或者漏字是不可以避免的,可以将两个pdf合并成一个,也可以让两个文件重叠像加水印的方式一样,电子章或者其他的用途,然后就是页面旋转多少度,加密解密的东西。

1.读取PDF的文字内容

import PyPDF2
# 打开pdf文件,以二进制以读文件打开
pdfFileObj = open('/Users/zhangmeihui/Downloads/automate_online-materials/meetingminutes.pdf','rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)# type:PyPDF2._reader.PdfFileReader
print(type(pdfReader))
# 判断文件是否加密
if pdfReader.isEncrypted:
    # decrypt方法是输入加密的密码对返回1,错返回0
    pdfReader.decrypt('rosebud')
# 获取pdf 文件的页数
print(pdfReader.numPages)
# 获取文件第一页
firstpage = pdfReader.getPage(0)
print(firstpage.extractText())

2.将两个pdf合成一个新的pdf文件

# 读取pdf文件以二进制文件
pdf1File = open('/Users/zhangmeihui/Downloads/automate_online-materials/meetingminutes.pdf','rb')
pdf2File = open('/Users/zhangmeihui/Downloads/automate_online-materials/meetingminutes2.pdf','rb')
pdf1Reader = PyPDF2.PdfFileReader(pdf1File)
pdf2Reader = PyPDF2.PdfFileReader(pdf2File)
psfWriter = PyPDF2.PdfFileWriter()

for pageNum in range(pdf1Reader.numPages):
    pageObject = pdf1Reader.getPage(pageNum)
    psfWriter.addPage(pageObject)

for pageNum in range(pdf2Reader.numPages):
    pageObject = pdf2Reader.getPage(pageNum)
    psfWriter.addPage(pageObject)

newPdfFile = open('/Users/zhangmeihui/Downloads/combinedminutes.pdf','wb')
psfWriter.write(newPdfFile)
newPdfFile.close()
pdf1File.close()
pdf2File.close()

3.页面旋转

# 旋转页面
# rb 是以写入二进制的形式打开
minutesFile = open('/Users/zhangmeihui/Downloads/automate_online-materials/meetingminutes.pdf','rb')
# 解析pdf文件
pdfReader = PyPDF2.PdfFileReader(minutesFile)
# 获取pdf文件的第一页
firstslide = pdfReader.getPage(0)
# 顺时针旋转90 ,还可以是180,270
firstslide.rotateClockwise(90)
#新建一个pdf输出对象
psfWriter = PyPDF2.PdfFileWriter()
#将刚刚旋转的页面写入pdf输出对象
psfWriter.addPage(firstslide)
#新建一个.pdf文件,wb表示输出二进制打开
newpdf1File = open('/Users/zhangmeihui/Downloads/automate_online-materials/meetingminutes.pdf','wb')
#将pdf写入文件写入新建的pdf文件
psfWriter.write(newpdf1File)
#最后关闭流
newpdf1File.close()
minutesFile.close()

4. pdf 页面叠加

minutesFile = open('/Users/zhangmeihui/Downloads/automate_online-materials/meetingminutes.pdf','rb')
pdfReader = PyPDF2.PdfFileReader(minutesFile)
page1 = pdfReader.getPage(0)
pdfWatermarkReader = PyPDF2.PdfFileReader(open("/Users/zhangmeihui/Downloads/automate_online-materials/watermark.pdf",'rb'))
#合并页面
page1.mergePage(pdfWatermarkReader.getPage(0))
pdfWriter = PyPDF2.PdfFileWriter()
pdfWriter.addPage(page1)

for pageNum in range(1,pdfReader.numPages):
    pageObj = pdfReader.getPage(pageNum)
    #给全部的文件重叠是和于加水印技术使印章和页面重叠
    #pageObj.mergePage(pdfWatermarkReader.getPage(0))
    pdfWriter.addPage(pageObj)
resultPdfFile = open("/Users/zhangmeihui/Downloads/重叠.pdf",'wb')
pdfWriter.write(resultPdfFile)
resultPdfFile.close()
minutesFile.close()

pdfWatermarkReader 要加进来的页面pdfReader 原图
结果

5. PDF 加密技术

pdfFile = open('/Users/zhangmeihui/Downloads/重叠.pdf','rb')
pdfReader = PyPDF2.PdfFileReader(pdfFile)
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(pdfReader.numPages):
    page = pdfReader.getPage(pageNum)
    pdfWriter.addPage(page)
# 加密密码为123456789
pdfWriter.encrypt("123456789")
resultFile = open("/Users/zhangmeihui/Downloads/重叠且加密.pdf",'wb')
pdfWriter.write(resultFile)
pdfFile.close()
resultFile.close()

6.打开加密文件

pdfFile = open('/Users/zhangmeihui/Downloads/重叠且加密.pdf','rb')
pdfReader = PyPDF2.PdfFileReader(pdfFile)
pdfReader.isEncrypted #为 true 则是加密 加密获取获取文件信息时报错的。比如我们获取个页数
#pdfReader.numPages 这个就会报错
#写入密码
pdfReader.decrypt("123456789")
print(pdfReader.numPages)#这次就打印出了页数。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值