首页 > 编程语言 >python 处理pdf加密文件

python 处理pdf加密文件

时间:2024-01-11 11:24:15浏览次数:42  
标签:文件 加密 python writer file reader pdf page

近期有同事需要提取加密的pdf文件,截取其中的信息,并且重构pdf文件。网上没有搜到相关的pdf操作,于是咨询了chatgpt,给出了pypdf2的使用案例。但是时间比较久远了,很多库内的调用接口都已经更新了。

于是自行到官方的库内学习相关接口使用。整理的处理代码如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Jan 11 10:36:17 2024

@author: xm AZHE
"""

import PyPDF2
file=r'C:\Users\xm\Downloads\xxx1.pdf'
# 打开PDF文件
pdf_file = open(file, 'rb')

# 创建一个PDF阅读器对象
pdf_reader = PyPDF2.PdfReader(pdf_file)

# 创建一个新的PDF写入器对象
pdf_writer = PyPDF2.PdfWriter()

# 截取第0,第101到108页
page = pdf_reader.pages[0]
pdf_writer.add_page(page)
for i in range(101,109):
    page = pdf_reader.pages[i]
    pdf_writer.add_page(page)
    # 顺便导出下每页的图片
    count = 0
    for image_file_object in page.images:
        with open(str(count) + image_file_object.name, "wb") as fp:
            fp.write(image_file_object.data)
            count += 1
    # 打印下下每页的文字
    page.extract_text(0)
    
# 处理的文件加个密
pdf_writer.encrypt("123456")

# 创建一个新的PDF文件并将页面写入其中
out_file=file.replace('.pdf','_remake.pdf')
output_file = open(out_file, 'wb')
pdf_writer.write(output_file)

# 关闭文件
output_file.close()
pdf_file.close()

 

PS: 解密用

if reader.is_encrypted:
    reader.decrypt("123456")

 

标签:文件,加密,python,writer,file,reader,pdf,page
From: https://www.cnblogs.com/techs-wenzhe/p/17958145

相关文章

  • 加密算法的比较
    对称加密 非对称加密des(64位补齐) aes(128位补齐) blowfish(64位补齐) rsa单位(Byte) des_ecb des_cbc des_cfb aes_ecb aes_cbc aes_cfb blowfish_cbc blowfish_cfb rsa密文长度(50) 56Byte 56Byte 56Byte 64Byte 64Byte 64Byte 56Byte 56Byte 128Byte密......
  • PDF数字签名信息获取(Java)
    利用Java代码,读取PDF内的签名信息,包括签发单位、Thumbprint、签发时间等信息。此处使用了Spire.PDF的相关依赖,Maven项目可使用以下方式引入,或者直接导入相关jar包即可。<repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name>......
  • python第三节:Str字符串类型(2)
    str.format(*args, **kwargs)执行字符串格式化操作。语法:点号前面是一个带槽(由大括号表示)的字符串,字符串里面可以设置各种参数和格式控制标记,后面是format和替换的字符串。{参数序号:格式控制标记}如下六个按照顺序使用。:填空对齐宽度逗号精度类型冒号用于填充的单个字符<左对齐>......
  • # yyds干货盘点 # 盘点一个Python自动化办公的需求——一键批量插图到Excel指定单元格
    大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Python自动化办公的问题,问题如下:大佬们,昨天我在做插入excel图片的时候想起一个需求,好像挺难办的,也蛮现实的。比如每个图片是有名称的,但在做excel的时候,能不能按照excel中的名称调用图片插入。就像下面这样......
  • 一个 python 拆解文本文件的工具
    背景你是否有遇到过文本文档太大无法打开的情况?比如说压测了好几天,生成了一个十几G的日志文件。下面这个脚本可以帮助你将一个大文件分解成一个小文件。假设文件名位:splitfile.py使用方法位:pythonsplitfile.pylog20该文件将会将log文件拆分成log.0log.1log.2...l......
  • 张正友棋盘代码-python
    具体实现方案:棋盘是一块由黑白方块间隔组成的标定板,我们用它来作为相机标定的标定物(从真实世界映射到数字图像内的对象)。之所以我们用棋盘作为标定物是因为平面棋盘模式更容易处理(相对于复杂的三维物体),但与此同时,二维物体相对于三维物体会缺少一部分信息,于是我们会多次改变棋盘的......
  • python3可视化之matplotlib库
     importmatplotlib.pyplotaspltimportnumpyasnpN=8i=0#指定一个画板fig=plt.figure(figsize=(20,5*N))x=np.arange(0,3*np.pi,0.1)y_sin=np.sin(x)y_cos=np.cos(x)i+=1plt.subplot(N,1,i)plt.plot(x,y_sin)plt.plot(x,y_cos)plt......
  • python3控制结构
    选择n=10i=2ifn==i:print("equal")elifn<i:print("lower")else:print("higher")遍历whilei<n:i+=1print(i)else:print("done")foriinrange(0,5):print(i)else:......
  • python3图片处理之pillow库
    pillow库简单使用fromPILimportImage,ImageFilter#pillow库img=Image.open("../../files/1.jpg")#通道print(img.getbands())#('R','G','B')print(img.getbbox())#(0,0,690,517)#图片的尺寸print(img.size)#(690......
  • Python对于for循环,可以用range()来控制循环次数,写法:range(次数)
    '''for循环次数循环的是列表、集合、元组、字典、字符串,这些类型中保存了几个数据值就循环几次'''#Python对于for循环,可以用range()来控制循环次数#写法:range(次数)name='Rocco'#设置变量name为字符串类型,值为'Rocco'ps='123456'#设置变量ps为字符串类型,值为'123456'......