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
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