用Python编辑PDF文件:拆分合并、加密解密、页面编辑

文章目录

    • 安装和初步使用
    • 合并与拆分
    • 页面编辑
    • 加密解密

安装和初步使用

PyPDF2支持拆分、合并、页面旋转、添加水印、加密解密等操作。支持pip安装,过程很丝滑。

pip install PyPDF2

PyPDF2提供了PdfFileReader类,可用于读取PDF文件,其metadata中存放了PDF的元数据。

from pprint import pprint
from  PyPDF2 import PdfReader
path = "test.pdf"
pdf = PdfReader(path)
pprint(pdf.metadata)
''' 返回值如下
{'/Author': 'caoyu','/CreationDate': "D:20231211141122+08'00'",'/Creator': 'Microsoft® Word 2016','/ModDate': "D:20231211141122+08'00'",'/Producer': 'iText 2.1.7 by 1T3XT; modified using iText® 5.5.13 ©2000-2018 ''iText Group NV (AGPL-version)'}
'''

PdfReader对象的属性pages,即页面的集合,通过统计其page的格式,即可知道pdf文档的总页数

print(len(pdf.pages))   # 返回1,说明只有1页

合并与拆分

pdfMerger是用于合并PDF的类,也十分易用,只需创建对象,并将准备合并的pdf对象逐一加入其中,再行保存,示例如下。

from  PyPDF2 import PdfMerger
merger=PyPDF2.PdfMerger()for i in range(5):merger.append(PdfReader(f))merger.write('merge.pdf')

接下来打开merge.pdf,查看其页码,可见的确合并了5页。

m = PdfReader('merge.pdf')
len(m.pages)    # 5

接下来,再对这

from  PyPDF2 import PdfWriterfor i,p in enumerate(m.pages):w = PdfWriter()w.add_page(p)w.write(f"{i}.pdf")

在当前路径下,多出了5个数字命名的pdf文件。

页面编辑

旋转和添加水印都相当于是对单个页面进行操作,故而其旋转操作是页面对象的内置方法rotate,默认为顺时针旋转,示例如下

w = PdfWriter()
p1 = pdf.pages[0].rotate(90)
w.add_page(p1)
p2 = pdf.pages[0].rotate(-90)
w.add_page(p2)
w.write('rotate.pdf')

page中提供了合并页面的方法mergePage,可用于添加水印,这并不让人费解,即可以把其中一个PDF文件作为水印,其添加方式如下

stamp = PdfReader("bg.pdf").pages[0]
w = PdfWriter(clone_from="test.pdf")
for page in w.pages:page.merge_page(stamp, over=False)writer.write("out.pdf")

其中,over为False,表示水印将在文本的下方,否则在其上方。

加密解密

通过encrypt函数可对PDF文件加密,decrypt则用于解密。

reader = PdfReader("1.pdf")
writer = PdfWriter()for page in reader.pages:writer.add_page(page)writer.encrypt("123456")
writer.write("encrypted.pdf")

这时再打开encrypt.pdf,就需要输入密码,

在这里插入图片描述

脱密过程如下

reader = PdfReader("encrypted.pdf")
writer = PdfWriter()if reader.is_encrypted:reader.decrypt("123456")for page in reader.pages:writer.add_page(page)writer.write("decrypted.pdf")

这回保存的decrypted.pdf就无需密码了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/285552.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html之CSS的高级选择器应用

文章目录 一、CSS高级选择器有哪些呢?二、高级选择器的应用1、层次选择器后代选择器子选择器相邻兄弟选择器通用兄弟选择器 2、结构伪类选择器(不常用)3、属性选择器E[attr]E[attrval]E[attr^val]E[attr$val]E[attr*val] 一、CSS高级选择器有…

充电桩测试系统的核心组成

充电桩测试系统是电动汽车充电设施的重要组成部分,它的主要功能是对充电桩的性能、安全性和可靠性进行全面的检测和评估。电源模块是充电桩测试系统的基础,负责为整个测试系统提供稳定的工作电压和电流。电源模块通常包括交流电源、直流电源和电池模拟器…

Java期末复习基础知识(for PTA)

一.判断题 1.Object是Java中所有类的共同父类。T Object是Java中所有类的共同父类。在Java中,每个类都直接或间接继承自Object类。因此,Object类中的方法(如equals()、hashCode()、toString()等)都可以在任意Java对象上调用 2.Jav…

AWS解决方案架构师学习与备考

系列文章目录 送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

u盘突然乱码然后文件都不见了怎么办

在我们日常使用电脑时,U盘作为常用的移动存储设备,扮演了重要的角色。然而,有时我们可能会遇到U盘突然出现乱码并无法访问文件的问题。这不仅让人感到困惑,还可能丢失重要的数据。本文旨在分享几种解决U盘乱码文件不可见问题的方法…

leecode-LCR 017. 最小覆盖子串(golang版本)

leecode最小覆盖字串 leecode链接地址 给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返回空字符串 “” 。 如果 s 中存在多个符合条件的子字符串,返回任意一个。 题解 func minWindow(…

未来医疗的新希望:人工智能与智能器官的奇妙融合

导言 人工智能技术的不断演进在医疗领域掀起了一场革命。随着智能器官与人工智能的深度融合,虽然医学领域迎来了前所未有的机遇,但同时也伴随着一系列潜在的问题与挑战。本文将深入探讨人工智能如何与智能器官相互融合,为医学带来新的治疗可能…

创建型模式之抽象工厂模式

一、概述 1、抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 2、抽象工厂模式:一个工厂可以生产一系列产品(一族产品),极大减少了工厂类的数量 3、抽象工厂模式&am…

transformer 位置编码

目录 pytorch 实现位置编码 通俗易懂的: 从上面效果图可以看出,这个三角函数式位置编码满足以下四个特点: transformer 位置编码 transformer 位置编码通俗解释 绝对位置和相对位置 pytorch 实现位置编码 转自:https://www…

分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】

分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现AOA-SVM算术优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现AOA-SVM算术优化支持向量机的数据分类预测…

坦克大战(二)

欢迎来到程序小院 坦克大战(二) 玩法:键盘(A W S D)键来控制方向,空格键发射子弹,N:下一关,P:上一关,Enter:开始,赶紧去闯关吧^^。开…

主馆位置即将售罄“2024北京国际信息通信展会”众多知名企聚京城

2024北京国际信息通信展,将于2024年9月份在北京国家会议中心盛大召开。作为全球信息通信技术领域的重要盛会,此次展会将汇集业内顶尖企业,展示最新的技术成果和产品。 目前,主馆位置即将售罄,华为、浪潮、中国移动、通…