PyPDF2是python的处理PDF文件的基本操作介绍
1 说明
1.1 PyPDF2:使用它可以轻松的处理 pdf 文件,它提供了读,割,合并,文件转换等多种操作。
1.2 PyPDF2可以对PDF文件进行加密,解密,目前已经更新到PyPDF3版本,本文基于PyPDF2进行介绍。
1.3 环境:python3.8,deepin-linux操作系统,微软vscode编辑器。
2 安装pip install PyPDF2 #pip3.8 install PyPDF2 #本机安装
3 相关网址:https://pythonhosted.org/PyPDF2/ https://pypi.org/project/PyPDF2/1.26.0/ https://github.com/mstamy2/PyPDF2/
4 PDF文件的合并,mergepdf.py代码如下:#pdf文件合并=merge from PyPDF2 import PdfFileMerger merger = PdfFileMerger() #将3个pdf文件合并,注意路径和目录 input1 = open("/home/xgj/Desktop/PyPDF2/1.pdf", "rb") input2 = open("/home/xgj/Desktop/PyPDF2/2.pdf", "rb") input3 = open("/home/xgj/Desktop/PyPDF2/3.pdf", "rb") #默认作为第一张,即position = 1,pages = (0,1)代表1.pdf的第一张,如果有很多张,注意取第几张到第几张 merger.append(fileobj = input1, pages = (0,1)) #与上面相同 merger.merge(position = 2, fileobj = input2, pages = (0,1)) # append entire input3 document to the end of the output document # 将3.pdf添加到上述的后面 merger.append(input3) # Write to an output PDF document,生成新的pdf output = open("/home/xgj/Desktop/PyPDF2/document-output.pdf", "wb") merger.write(output)
5 拆分pdf文件,splitpdf.py代码from PyPDF2 import PdfFileReader, PdfFileWriter def split(path, name_of_split): pdf = PdfFileReader(path) for page in range(pdf.getNumPages()): pdf_writer = PdfFileWriter() pdf_writer.addPage(pdf.getPage(page)) #拆分在根目录下 #output = f"{name_of_split}{page}.pdf" #指定目录下 output = f"/home/xgj/Desktop/PyPDF2/{name_of_split}{page}.pdf" with open(output, "wb") as output_pdf: pdf_writer.write(output_pdf) if __name__ == "__main__": #要拆分的pdf文件及目录 path = "/home/xgj/Desktop/PyPDF2/4.pdf" #注意name_of_split=NO split(path, "NO")
6 pdf文件加密,jiamipdf.py代码from PyPDF2 import PdfFileWriter, PdfFileReader def add_encryption(input_pdf, output_pdf, password): pdf_writer = PdfFileWriter() pdf_reader = PdfFileReader(input_pdf) for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) pdf_writer.encrypt(user_pwd=password, owner_pwd=None,use_128bit=True) with open(output_pdf, "wb") as fh: pdf_writer.write(fh) if __name__ == "__main__": #input是需要加密的pdf文件和目录,output是生成加密的原pdf的新pdf文件 #自定义密码 add_encryption(input_pdf="/home/xgj/Desktop/PyPDF2/1.pdf", output_pdf="/home/xgj/Desktop/PyPDF2/1m.pdf",password="123456")
7 解密pdf文件
7.1 jiemipdf.py代码import os #指定目录,即更改根目录的方法 os.chdir("/home/xgj/Desktop/PyPDF2") from PyPDF2 import PdfFileReader,PdfFileWriter pdf_reader = PdfFileReader("1m.pdf") #知道密码情况下,注意是解密,不是破解密码 pdf_reader.decrypt("123456") pdf_writer = PdfFileWriter() for page in range(pdf_reader.getNumPages()): pdf_writer.addPage(pdf_reader.getPage(page)) with open("encrypted.pdf", "wb") as out: pdf_writer.write(out)
7.2 注意细节:适合批量解密pdf文件,并且自己知道密码。
7.3 注意代码简洁,导入os,提前设路径,顺带复习python的os模块的路径设置。
===========================
8 pdf加水印:watermarkpdf.py代码from PyPDF2 import PdfFileReader, PdfFileWriter #安装:pip install reportlab,下次单独将这个模块 from reportlab.lib.units import cm from reportlab.pdfgen import canvas import reportlab.pdfbase.ttfonts # 创建水印信息 def create_watermark(content): #生成一个单独的水印pdf,注意路径和目录 file_name = "/home/xgj/Desktop/PyPDF2/mark.pdf" c = canvas.Canvas(file_name, pagesize=(30 * cm, 30 * cm)) # 移动坐标原点(坐标系左下为(0,0)) c.translate(4 * cm, 0 * cm) # 设置字体格式与大小,中文需要加载能够显示中文的字体,否则就会乱码,注意字体路径 # 如果是中文就是try try: reportlab.pdfbase.pdfmetrics.registerFont(reportlab.pdfbase.ttfonts.TTFont("yahei", "hwfs.ttf")) c.setFont("yahei", 50) #如果是英文就是except except: # 默认字体,只能够显示英文 c.setFont("Helvetica", 30) #这一行多次一举,注释掉 #content = "I love python" # 旋转角度度,坐标系被旋转 c.rotate(30) # 指定填充颜色 c.setFillColorRGB(0, 0, 0) # 设置透明度,1为不透明 c.setFillAlpha(0.05) # 画几个文本,注意坐标系旋转的影响 c.drawString(0 * cm, 3 * cm, content) # 关闭并保存pdf文件 c.save() return file_name # 插入水印 def add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out): pdf_output = PdfFileWriter() input_stream = open(pdf_file_in, "rb") pdf_input = PdfFileReader(input_stream, strict=False) # 获取PDF文件的页数 pageNum = pdf_input.getNumPages() # 读入水印pdf文件 pdf_watermark = PdfFileReader(open(pdf_file_mark, "rb"), strict=False) # 给每一页打水印 for i in range(pageNum): page = pdf_input.getPage(i) page.mergePage(pdf_watermark.getPage(0)) page.compressContentStreams() # 压缩内容 pdf_output.addPage(page) pdf_output.write(open(pdf_file_out, "wb")) if __name__ == "__main__": #需要加水印的pdf文件和目录 pdf_file_in = "/home/xgj/Desktop/PyPDF2/123.pdf" #生成新的加过水印的pdf文件 pdf_file_out = "/home/xgj/Desktop/PyPDF2/watermark.pdf" #设置加水印的文字内容:英文 pdf_file_mark = create_watermark(r"I love python") #设置加水印的文字内容:中文 #pdf_file_mark = create_watermark(r"水印") add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out)
自己整理,分享出来,已经亲测,欢迎转发和收藏,自己以后拿来就用,希望大家希望。
高邮郭集路灯行业三角债务如何形成?文人骚客,了解高邮的,只知道高邮出了一个作家,他的名字叫汪曾祺。随着通讯的发展,全国人民,了解到高邮有一个小镇,叫郭集镇。因为生产路灯而出名,各路英雄狭路相逢,纷纷来到这个小镇,想
便有万种风情,更与何人说,来说下郭集之好我在郭集,一个小乡镇,生于此,长于此,在此携手一人走进柴米油盐,育有两个孩子。每天踩着阳光出发,阳光是洒在脸上全部希望,虔诚的活着,花花草草是力量的源泉。不做一个虚伪的人,喜欢之人
情绪的不断修复情绪对人的滋生会导致有不良的思绪发生。比如与人发生争执。首先我们是针对事情去解决,并不是针对人。往往都是事情错了,把事情的原因找出来,然后去解决它。如果我们要是一直是打骂的形式出现
互动时候的魅力所在互动中的美丽所在。烟花烟花烟花说起沙子,太阳每个小朋友都喜欢不得了。在沙滩上,沙子闪耀着金光闪闪的光芒,让宝宝在玩的过程中发挥了想像力,创造力真是其乐无穷。同时在玩的时候,宝妈要给
乐趣中成长孩子在幼儿阶段好奇心是特别强的,外面世界对他们来说是一个具有魔力的磁场。他们都想去摸摸,看看,问问,但有些父母亲担心他的安全。却阻止了孩子得不到父母的理解。可是孩子内心对外面精彩的
今天你笑了吗笑容天天见阳光育婴师,喜欢宝宝宝宝脸部经常面带笑容,代表着宝宝面部表情发育的比较完善,处于比较舒适的状态。生活在快乐环境下的宝宝。通常和长辈们互动时笑容无比灿烂而又甜美。越早笑的孩
被拐孩子找到后,还选择跟养父母?不是背叛,是亲情归属每一个孩子都是父母的希望,孩子能够平安健康地在父母身边成长,是每一个父母最大的期望。然而每年我们都可以看到人贩子拐卖孩子的事情,而且现在人贩子越来越猖獗,甚至敢在光天化日之下拐走孩
宁波工程学院排名走下坡路,位次下跌4700名,或受黑人外教影响近几年来,随着我国的国力强盛,很多人不太理解为何国外学生还能享受优待,相对于我国中高考的严苛,大学生各项费用的支出,让家长感到无力,国外留学生到我国留学享受着更好的待遇,甚至外国学
教育部发出这一消息,尖子生地位或将不保,部分家长有点慌以往我国很多中小学,高中开学前都会有一次分班考试,何谓分班考试?通过考试的形式将学生划分到不同层次,成绩高的学生会分到重点班,成绩不好的学生被分到普通班,这样划分后,重点班和普通班
10月1日后取消周中课?北京地区已经实行,校外培训或走向绝路双减之前,家长一边花着高额补课费,一边抱怨着学生压力大,很多家长希望我国教育部整治补课班高额收费的乱象,于是双减政策出台,家长反而有些无奈,以前补课班价格昂贵,补或者不补,选择权在
教育部通知,大语文时代正式来临,英语不再称霸天下以往带给学生最大困扰的科目大概是英语,英语一直跟随学生整个学习时代,毕业后却甚少使用,和英语形成鲜明对比的便是语文的学习,语文是母语,但大部分学生在语文上很少费时间,像以前补课盛行
孩子今年长高了多少?达标了吗?是否需要拔一拔?经常听家长们感叹,现在的孩子真是辛苦,除了上不完的兴趣班,还有爬不完的作业山。在各种压力之下,家长们也别忘记关注孩子的生长发育情况哟!娃娃的生长发育情况为啥这么重要?我们先来看一个
盘点你可能还没听过的催乳饮食产后为了孩子能够有充足的奶水喝,很多产妇会遇上一些奇奇怪怪的饮食,他们搭配奇怪,味道奇怪,气味古怪,难道端给你吃的人用心就不怪?不管你是否反胃,只管吃了这玩意下不下奶。接下来就一碗
关于刷牙这件事今天主要是记录下我们家4个人当下迥异的刷牙习惯和方法。哎,刷牙这件事,我的确甚至可以说做的不OK,只能指望他们向他们的妈妈看齐了。第一种刷牙方式属于我们家大宝的。在我们家里,除了每
生二胎让我成长了,也看清了很多事我今年才生了二胎,当时怀孕时就有很多人问这个问题,为什么会选择生二胎。其实我生二胎是因为我的大女儿,当她出去看到现在很多小朋友都是带着弟弟妹妹一起出去玩,她就会很羡慕别人,就经常对
顺产月子餐30天食谱顺产月子餐30天食谱,随着人们生活质量水平的提高,越来越多的产后妈妈更加注重自己产后身材恢复,更加注重产后月子病的预防。为此很多人都愿意接受月子餐的调理效果。其实月子餐就是产妇在坐
迟到大王一个荒诞有趣呼唤童心的故事迟到大王是许多孩子的最爱,一次又一次的翻页中,总会有不断的笑声,总会有很多新奇的发现,它的魅力究竟在哪里呢?一起来找一找吧!先从封面开始看起。题目新奇,引发联想我们平时听说过故事大
婴儿配方乳粉消费提示婴幼儿配方乳粉是以乳类及乳蛋白制品(乳基)和或大豆及大豆蛋白制品(豆基)为主要原料,加入适量的维生素矿物质和或其他成分,仅用物理方法生产加工制成的粉状产品。正规的婴幼儿配方奶粉营养
产妇要求打无痛被拒,硬生生熬过顺产后,一个月后才能见到宝宝前几天在网上看到一则新闻,一名孕妇在产房的时候要求打无痛,医生要求家属签字,可是家属包括女方的家长都认为打无痛会影响胎儿,最终都拒绝签字。孕妇得知之后出来自己签,但是家属并不缴费,
秋日临近,分享一款冰糖金桔,甜香味美又营养,孩子特爱吃大家好,这里是杨爸的育儿经,主题介绍简单的育儿辅食和育儿知识,只为分享对孩子更好的。本款美食适合3周岁以上的孩子品尝。在我们的日常生活中,相信很多人对于冰糖金桔这款美食应该并不陌生
亲子关系金钥匙之三说了什么不重要,重要的是孩子听到了什么效果比道理更重要,在这里,不是崇尚大叫,不讲道理,而是你在讲道理的同时,一定要注重的是你要拿到你的效果。具体来讲很多的家长说这件事情我都跟你说了30次了,十次了,你都不改,我嘴巴都
孩子幸福的密码写在大脑规则中,情绪是控制开关,友谊是他的关键生活中唯一真正重要的东西就是你和其他人的关系我们作为孩子的父母,一辈子最希望看到的就是孩子从小到大都是幸福的,快乐的。但是你具体要问他们,具体希望他怎样才是幸福的时候,不同的父母可