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