首页
色哥哥
亚洲色情网
色情婷婷
搜神记波多野结衣
色妮姑
好色女教师

色哥哥

你的位置:徐可欣 拳交 > 色哥哥 > 91porn 91porn python铁心完满PDF解密(含GUI及打包技术)

91porn 91porn python铁心完满PDF解密(含GUI及打包技术)

发布日期:2024-10-19 09:50    点击次数:98

91porn 91porn python铁心完满PDF解密(含GUI及打包技术)

在平日职责中91porn 91porn,咱们时常会遭遇一些被加密的PDF文献。为了大要顺利地阅读或剪辑这些文献,咱们需要先破解其密码。本文将先容怎样诞生一个带有图形用户界面(GUI)的PDF解密器具,不错精真金不怕火地选择文献并解密PDF文档。

图片

器具选择与环境准备

诞生PDF解密器具所需的环境包括Python编程说话偏激一些库:

PyPDF2:用于读取和写入PDF文献。PyQt5:用于创建图形用户界面。PyInstaller:用于将Python剧本打包成可践诺文献。率先,确保你已装置所需的库,不错使用以下敕令进行装置:pip install PyPDF2 PyQt5 pyinstallerGUI界面的策动与完满

咱们的器具需要一个疏忽的用户界面,使用户大要选择加密的PDF文献、选择解密后的保存旅途,并泄露解密过程。咱们使用PyQt5来完满这个界面。

启动化界面

率先,咱们创建一个PDFDecryptor类,收受自QWidget,并在其中启动化界面元素。

童颜巨乳
import sysfrom PyPDF2 import PdfReader, PdfWriterfrom PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QFileDialog, QTextEdit, QLabelclass PDFDecryptor(QWidget):    def __init__(self):        super().__init__()        self.initUI()            def initUI(self):        self.setWindowTitle('PDF解密器具')        self.setGeometry(100, 100, 600, 400)                layout = QVBoxLayout()                self.file_label = QLabel('选择加密的PDF文献:')        layout.addWidget(self.file_label)                self.file_button = QPushButton('选择文献')        self.file_button.clicked.connect(self.select_file)        layout.addWidget(self.file_button)                self.output_label = QLabel('选择解密后的PDF文献保存旅途:')        layout.addWidget(self.output_label)                self.output_button = QPushButton('选择旅途')        self.output_button.clicked.connect(self.select_output_path)        layout.addWidget(self.output_button)                self.decrypt_button = QPushButton('来源解密')        self.decrypt_button.clicked.connect(self.decrypt_pdf)        layout.addWidget(self.decrypt_button)                self.log = QTextEdit()        self.log.setReadOnly(True)        layout.addWidget(self.log)                self.setLayout(layout)
文献选择与旅途选择

接下来,咱们完满文献选择和旅途采费力能。这两个功能通过点击按钮来触发,并在日记区域泄露用户的选择。

def select_file(self):    options = QFileDialog.Options()    file_path, _ = QFileDialog.getOpenFileName(self, '选择加密的PDF文献', '', 'PDF Files (*.pdf)', options=options)    if file_path:        self.file_path = file_path        self.log.append(f'选择的文献: {file_path}')def select_output_path(self):    options = QFileDialog.Options()    folder_path = QFileDialog.getExistingDirectory(self, '选择解密后的PDF文献保存旅途', options=options)    if folder_path:        self.output_path = folder_path        self.log.append(f'保存旅途: {folder_path}')解密功能的完满

在用户选择文献和保存旅途后,点击“来源解密”按钮即可触发解密操作。咱们通过调用load_pdf法式来读取并解密PDF文献,然后使用PdfWriter将解密后的施行写入新的PDF文献。

def decrypt_pdf(self):    if hasattr(self, 'file_path'):        input_path = self.file_path                if not hasattr(self, 'output_path'):            output_path = ''.join(input_path.split('.')[:-1]) + '_decrypted.pdf'        else:            output_path = f'{self.output_path}/{input_path.split('/')[-1].split('.')[0]}_decrypted.pdf'                self.log.append('正在解密...')        pdf_reader = self.load_pdf(input_path)        if pdf_reader is None:            self.log.append('未能读取施行')        elif not pdf_reader.is_encrypted:            self.log.append('文献未加密,无需操作')        else:            pdf_writer = PdfWriter()            pdf_writer.append_pages_from_reader(pdf_reader)                        with open(output_path, 'wb') as output_file:                pdf_writer.write(output_file)            self.log.append(f'解密文献已生成: {output_path}')    else:        self.log.append('请先选择PDF文献')def load_pdf(self, file_path):    try:        pdf_file = open(file_path, 'rb')    except Exception as error:        self.log.append('无法掀开文献: ' + str(error))        return None    reader = PdfReader(pdf_file, strict=False)    if reader.is_encrypted:        try:            reader.decrypt('')        except Exception as error:            self.log.append('无法解密文献: ' + str(error))            return None    return reader
运行主法子

终末,咱们在主法子中运行咱们的PDF解密器具。

if __name__ == '__main__':    app = QApplication(sys.argv)    ex = PDFDecryptor()    ex.show()    sys.exit(app.exec_())打包成可践诺文献

为了精真金不怕火用户使用,咱们不错将该Python剧本打包成一个可践诺文献。使用PyInstaller不错铁心完满这小数:

pyinstaller --onefile --windowed pdf解密.py

将pdf解密.py替换为你的剧本文献名。运行上述敕令后91porn 91porn,将在dist文献夹中生成一个可践诺文献,不错顺利运行它来使用咱们的PDF解密器具。

圆善代码共享import sysfrom PyPDF2 import PdfReader, PdfWriterfrom PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QFileDialog, QTextEdit, QLabelclass PDFDecryptor(QWidget):    def __init__(self):        super().__init__()        self.initUI()            def initUI(self):        self.setWindowTitle('PDF解密器具')        self.setGeometry(100, 100, 600, 400)                layout = QVBoxLayout()                self.file_label = QLabel('选择加密的PDF文献:')        layout.addWidget(self.file_label)                self.file_button = QPushButton('选择文献')        self.file_button.clicked.connect(self.select_file)        layout.addWidget(self.file_button)                self.output_label = QLabel('选择解密后的PDF文献保存旅途:')        layout.addWidget(self.output_label)                self.output_button = QPushButton('选择旅途')        self.output_button.clicked.connect(self.select_output_path)        layout.addWidget(self.output_button)                self.decrypt_button = QPushButton('来源解密')        self.decrypt_button.clicked.connect(self.decrypt_pdf)        layout.addWidget(self.decrypt_button)                self.log = QTextEdit()        self.log.setReadOnly(True)        layout.addWidget(self.log)                self.setLayout(layout)    def select_file(self):        options = QFileDialog.Options()        file_path, _ = QFileDialog.getOpenFileName(self, '选择加密的PDF文献', '', 'PDF Files (*.pdf)', options=options)        if file_path:            self.file_path = file_path            self.log.append(f'选择的文献: {file_path}')    def select_output_path(self):        options = QFileDialog.Options()        folder_path = QFileDialog.getExistingDirectory(self, '选择解密后的PDF文献保存旅途', options=options)        if folder_path:            self.output_path = folder_path            self.log.append(f'保存旅途: {folder_path}')    def decrypt_pdf(self):        if hasattr(self, 'file_path'):            input_path = self.file_path                        if not hasattr(self, 'output_path'):                output_path = ''.join(input_path.split('.')[:-1]) + '_decrypted.pdf'            else:                output_path = f'{self.output_path}/{input_path.split('/')[-1].split('.')[0]}_decrypted.pdf'                        self.log.append('正在解密...')            pdf_reader = self.load_pdf(input_path)            if pdf_reader is None:                self.log.append('未能读取施行')            elif not pdf_reader.is_encrypted:                self.log.append('文献未加密,无需操作')            else:                pdf_writer = PdfWriter()                pdf_writer.append_pages_from_reader(pdf_reader)                                with open(output_path, 'wb') as output_file:                    pdf_writer.write(output_file)                self.log.append(f'解密文献已生成: {output_path}')        else:            self.log.append('请先选择PDF文献')        def load_pdf(self, file_path):        try:            pdf_file = open(file_path, 'rb')        except Exception as error:            self.log.append('无法掀开文献: ' + str(error))            return None        reader = PdfReader(pdf_file, strict=False)        if reader.is_encrypted:            try:                reader.decrypt('')            except Exception as error:                self.log.append('无法解密文献: ' + str(error))                return None        return readerif __name__ == '__main__':    app = QApplication(sys.argv)    ex = PDFDecryptor()    ex.show()    sys.exit(app.exec_()) 本站仅提供存储做事,通盘施行均由用户发布,如发现存害或侵权施行,请点击举报。

Powered by 徐可欣 拳交 @2013-2022 RSS地图 HTML地图

Copyright Powered by365建站 © 2013-2024