Direkt zum Hauptinhalt

Python script zum entschlüsseln von PDF

Beschreibung:

Ein Python script das eine zum bearbeitende gesperrte PDF entsperrt in dem es die PDF nochmals Druckt und speichert.

Vorrausetzungen

pip install pyqt5 PyPDF2

Das Script auch zum Download : removepermission.py 


from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QFileDialog, QMessageBox
from PyPDF2 import PdfReader, PdfWriter

class PDFPasswordRemover(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # Layouts
        
        mainLayout = QVBoxLayout()
        sourceLayout = QHBoxLayout()
        targetLayout = QHBoxLayout()
        topLayout = QHBoxLayout()
        # Setzen Sie die Größe des Hauptfensters
        self.resize(500, 200)  # Ändern Sie diese Werte nach Bedarf
        self.setWindowTitle("Entfernen von Kennwort")

        # Über Button
        aboutButton = QPushButton("Über", self)
        aboutButton.clicked.connect(self.showAboutInfo)
        topLayout.addWidget(aboutButton)
        topLayout.addStretch()

        # Source file widgets
        self.sourceEntry = QLineEdit(self)
        sourceBrowseButton = QPushButton("Quelle Durchsuchen", self)
        sourceBrowseButton.clicked.connect(self.browseSourceFile)
        sourceLayout.addWidget(self.sourceEntry)
        sourceLayout.addWidget(sourceBrowseButton)

        # Target file widgets
        self.targetEntry = QLineEdit(self)
        targetSaveButton = QPushButton("Ziel Durchsuchen", self)
        targetSaveButton.clicked.connect(self.saveTargetFile)
        targetLayout.addWidget(self.targetEntry)
        targetLayout.addWidget(targetSaveButton)

        # Decrypt button
        decryptButton = QPushButton("Entschlüsseln", self)
        decryptButton.clicked.connect(self.decryptPDF)

        # Result label
        self.resultLabel = QLabel("", self)

        # Adding widgets to main layout
        mainLayout.addLayout(topLayout)
        mainLayout.addLayout(sourceLayout)
        mainLayout.addLayout(targetLayout)
        mainLayout.addWidget(decryptButton)
        mainLayout.addWidget(self.resultLabel)

        self.setLayout(mainLayout)
        self.setWindowTitle("Entfernen von Kennwort")

    def showAboutInfo(self):
        QMessageBox.about(self, "Über", "Hacker-Net Telekommunikation\nAm Wunderburgpark 5b\n26135 Oldenburg\n\nhttps://www.hacker-net.de")


    def browseSourceFile(self):
        file_path, _ = QFileDialog.getOpenFileName(self, "Quell-PDF wählen", "", "PDF Files (*.pdf)")
        if file_path:
            self.sourceEntry.setText(file_path)

    def saveTargetFile(self):
        file_path, _ = QFileDialog.getSaveFileName(self, "Ziel-PDF speichern", "", "PDF Files (*.pdf)")
        if file_path:
            self.targetEntry.setText(file_path)

    def decryptPDF(self):
        source = self.sourceEntry.text()
        target = self.targetEntry.text()
        if source and target:
            message = self.removePassword(source, target)
            self.resultLabel.setText(message)
        else:
            self.resultLabel.setText("Bitte wählen Sie die Quell- und Zielpfade aus.")

    def removePassword(self, source_path, target_path):
        try:
            reader = PdfReader(source_path)
            writer = PdfWriter()
            for page in reader.pages:
                writer.add_page(page)
            with open(target_path, "wb") as output_pdf:
                writer.write(output_pdf)
            return "Erfolg: PDF wurde erfolgreich gespeichert."
        except Exception as e:
            return f"Fehler: {e}"

def main():
    app = QApplication([])
    ex = PDFPasswordRemover()
    ex.show()
    app.exec_()

if __name__ == '__main__':
    main()

Möchte man das Script in eine einzelne Ausführbare Datei packen.
Ist pyinstaller nützlich.
Siehe hier : Python als Einzel Executable