PDF加密解密小程序上线啦

PDF加密,解密小程序,历时3天终于调试上线了!不过本程序目前只完成了PDF加密和解密,

对于word转txt还没有写完,点击会有提示窗口功能待开发,哈哈,你们可以考虑自己去填充这部分。

话不多说,代码在最后,你们自己试试吧。程序里面有个有意思的地方自己挖掘。

 

1. 选择文件, File link:显示对应的文件路径

2.点击开始加密, 跳出密码输入对话框,输入想要加密的密码;

 3.点击SUMBIT递交,跳出对话框,点击OK,

4.进度条等待, 然后是提示框里面显示xxx文件,加密结束

5.本程序对已经加密的文件做了识别,如果选择文件为已经加密的文件则如图:

 

 


import PySimpleGUI as sg
import re

# 主题设置
sg.theme('HSSFColor.TEAL')

# 布局设置
layout = [
    [sg.Text('File link:', font=("Adobe 宋体 Std L", 15)),
     sg.Text('', key='filename', size=(50, 1), font=("Arial Nova", 10), text_color='blue')],
    [sg.Text('程序操作记录', justification='center')],
    [sg.Output(size=(80, 20), font=("Adobe 宋体 Std L", 10)),sg.Combo(['Method 1', 'Method 2'])],
    [sg.FileBrowse('选择文件', key='file', target='filename'), sg.Button('开始加密'), sg.Button('开始解密'), sg.Button('word-txt'), sg.Button('关闭程序')]
]

# 创建窗口
window = sg.Window('PDF加密解密小程序,作者:Dieter', layout, font=("微软雅黑", 15),
                   default_element_size=(50, 1))

# 事件循环
while True:
    event, values = window.read()
    if event in (None, '关闭程序'):
       break

    if event == '开始加密':

        if values['file'] and re.findall(r'\.(\S+)', values['file'])[0] == 'pdf':
            fileName = values['file']

            from PyPDF2 import PdfReader, PdfWriter

            reader = PdfReader(fileName)
            writer = PdfWriter()
            if reader.is_encrypted:
                print('文件已加密\n请选择其他文件')
            # 拷贝每一页的内容
            else:
                for page in reader.pages:
                    writer.add_page(page)
                import PySimpleGUI as sg

            #while True:
                layout2 = [[sg.Text('Password input.')],
                          [sg.InputText()],
                          [sg.Submit('SUMBIT'), sg.Cancel('CANCEL')]]

                window2 = sg.Window('Window Title', layout2)

                event2, values2 = window2.read()

                if event2 in (None, 'CANCEL'):
                    sg.popup('Nothing')  # 弹出窗口\

                if event2 == 'SUMBIT':
                    window2.close()
                    text_input1 = values2[0]
                    sg.popup('You entered', text_input1)  # 弹出窗口


                    #进度条
                    count = range(1000)
                    for i, item in enumerate(count):
                        sg.one_line_progress_meter('实时进度条', i + 1, len(count), '-key-')

                    # 在新的pdf文件中添加密码
                    writer.encrypt(text_input1)

                    # 保存成新的pdf
                    name = re.findall(r'(.*?)\.', fileName)[0]
                    pdf_file1 = f'{name}加密.pdf'
                    with open(pdf_file1, "wb") as f:
                        writer.write(f)
                    page = reader.pages[0]
                    print(page.extract_text())
                    print(pdf_file1)
                    print('\n----------加密完毕----------\n')

        else:
            print('文件未选取或文件非pdf文件\n请先选择文件')

    if event == '开始解密':
        if values['file'] and re.findall(r'\.(\S+)', values['file'])[0] == 'pdf':
            fileName = values['file']
            import PySimpleGUI as sg


            from PyPDF2 import PdfReader, PdfWriter

            # 读取上面加密的pdf文件
            reader = PdfReader(fileName)
            writer = PdfWriter()

            # 解密
            if reader.is_encrypted:

                import PySimpleGUI as sg

                layout3 = [[sg.Text('Password input.')],
                          [sg.InputText()],
                          [sg.Submit(), sg.Cancel()]]

                window3 = sg.Window('Window Title', layout3)

                event3, values3 = window3.read()

                window3.close()
                text_input3 = values3[0]

                count = range(1000)
                for i, item in enumerate(count):
                    sg.one_line_progress_meter('实时进度条', i + 1, len(count), '-key-')

                reader.decrypt(text_input3)

                for page in reader.pages:
                    writer.add_page(page)

                # 保存解密后的pdf
                name = re.findall(r'(.*?)\.', fileName)[0]
                pdf_file2 = f'{name}解密.pdf'
                with open(pdf_file2, "wb") as f:
                    writer.write(f)
                # 保存成新的pdf
                #     将每一页内容加到writer对象中

                page = reader.pages[0]
                print(page.extract_text())
                print(pdf_file2)
                print('\n----------解密完毕----------\n')
        else:
            print('文件未选取或文件非pdf文件\n请先选择文件')

# word to txt

    if event == 'word-txt':

        if values['file'] and re.findall(r'\.(\S+)', values['file'])[0] == 'docx':
            fileName = values['file']


            print('\n--------功能等待开发--------\n')

        else:
            print('文件为选取或非word文件\n请先选择文件')


window.close()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dieter.ding

祝老板码来财

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值