操控PDF文件的代码我们主要做一件事:那就是调用、调用、再调用。我们站在PyPDF2这个模块的肩膀上,通过调用模块提供的功能齐全的“工具”对PDF文件进行各式“蹂躏”:
我们合并多个PDF文件(只能加三个视频素材,所以这个视频见前一篇文章)
我们给PDF文件加水印
我们对PDF文件进行加密
我们打开加密了的PDF文件
其实我录了一个60分钟的视频来讲怎么操控PDF文件,这么长估计看的人不会很多,再说它现在还在那转码呐(手动翻白眼)今天;没法配图了,因为我要赶走午夜钟声敲响之前,把这篇文章发出去(再次手动翻白眼);要不今天的额度就浪费了(手动翻第三个白眼)
注:这是微信公众号搬来的文章,公众号每天限额一篇,当时急着赶在午夜12点前把文章发出去????
以前学python的时候看到过pdf文件的操作,走过路过而已,并没留下啥印象。就算是计划要讲pdf操作的应用实例,在没专门准备之前也不知道具体用程序怎么操控PDF文件。直到因为自己铁公鸡舍不得花钱买好用的软件,逼得没办法激发潜能才突然想起有这么个模块,继而拿来仔细研究......所以觉不觉得知识储备正在变成知识地图或者是知识路径呢?
我们只需要知道有这个知识模块或这个知识模块的大概位置就可以了,用到时才去学,用完忘掉八九分也没关系(年纪大记性差,我现在是用完全忘)。哪怕不知道要解决的问题用到什么知识模块,不知道要用的知识模块在哪里也没关系,只要有解决路径就没问题。因为有搜索引擎有技术论坛有很多无私奉献愿意分享的牛人...或者是机器人。说到人工智能呀,论知识储备我们是无论如何也比不上计算机的,尤其是越来越智能的计算机。不知道像我这样如此依赖计算机的知识储备,以后会不会被计算机反向控制?!比如它只给我看它想给我看的信息呀!嗯...这个问题太复杂了,留给别人去想吧,我可要保护我的脑细胞不被累坏,反正现在我喜欢“智能”这个词。
匆忙结尾,胡言乱语请见谅。
import PyPDF2
with open('withCover.pdf', 'rb') as pdfWithCover:
pdfReader = PyPDF2.PdfFileReader(pdfWithCover)
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(1, pdfReader.numPages):
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
with open('withoutCover.pdf', 'wb') as pdfOutputFile:
pdfWriter.write(pdfOutputFile)
import PyPDF2
pdfFile = open('withCover.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFile)
coverPage = pdfReader.getPage(0)
markFile = open('watermark.pdf', 'rb')
pdfWatermarkReader = PyPDF2.PdfFileReader(markFile)
coverPage.mergePage(pdfWatermarkReader.getPage(0))
pdfWriter = PyPDF2.PdfFileWriter()
pdfWriter.addPage(coverPage)
for pageNum in range(1, pdfReader.numPages):
pageObj = pdfReader.getPage(pageNum)
pdfWriter.addPage(pageObj)
resultPdfFile = open('watermarkedCover.pdf', 'wb')
pdfWriter.write(resultPdfFile)
pdfFile.close()
markFile.close()
resultPdfFile.close()
# 合并
import PyPDF2
filenames = ['startCover.pdf', 'basic.pdf', 'notDream.pdf', 'instance.pdf','endCover.pdf']
merger = PyPDF2.PdfFileMerger()
for filename in filenames:
merger.append(PyPDF2.PdfFileReader(filename))
merger.write('PythonABC.pdf')
# 加密
import PyPDF2
with open('PythonABC.pdf', 'rb') as pdfFile:
pdfReader = PyPDF2.PdfFileReader(pdfFile)
pdfWriter = PyPDF2.PdfFileWriter()
for pageNum in range(pdfReader.numPages):
pdfWriter.addPage(pdfReader.getPage(pageNum))
pdfWriter.encrypt('python')
with open('encryptedPythonABC.pdf', 'wb') as resultPdf:
pdfWriter.write(resultPdf)
# 打开加密
import PyPDF2
with open('pdfFileReaderDoc.pdf', 'rb') as pdfFileObj:
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
numpages = pdfReader.numPages
print("Now I know there are {} pages\n".format(numpages))
if pdfReader.isEncrypted:
if pdfReader.decrypt('python'):
pageObj = pdfReader.getPage(0)
else:
print('Wrong password')
else:
pageObj = pdfReader.getPage(0)
print(pageObj.extractText())
pageObj.rotateClockwise(90)
pdfwriter = PyPDF2.PdfFileWriter()
pdfwriter.addPage(pageObj)
pdfwriter.addBlankPage()
with open('rotatedPDF.pdf', 'wb') as rotatedPDF:
pdfwriter.write(rotatedPDF)