Alles was mit PDF Programmen zu tun hat
PDF entschlüsseln
PDF entschlüsseln
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
PDF komprimieren
PDF komprimieren
Quelltext PDF compress
Beschreibung:
Ein python script mit Grafischer oberfläche, das eine riesen PDF komprimiert.
Das Script:
import sys
import PyPDF2
import subprocess
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QMessageBox, QLabel
from PyQt5.QtCore import Qt # Hinzugefügt
# Externe Funktion für die PDF-Komprimierung
def compress_pdf(source_path, output_path):
try:
subprocess.run([
"gs", "-sDEVICE=pdfwrite", "-dCompatibilityLevel=1.4",
"-dPDFSETTINGS=/ebook", # Ändern Sie dies für unterschiedliche Komprimierungslevel
"-dNOPAUSE", "-dBATCH", "-dQUIET",
f"-sOutputFile={output_path}", source_path
], check=True)
except subprocess.CalledProcessError as e:
raise RuntimeError(f"Ein Fehler ist aufgetreten: {e}")
except Exception as e:
raise RuntimeError(f"Ein unerwarteter Fehler ist aufgetreten: {e}")
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PDF Komprimieren'
self.source_pdf_path = ''
self.target_pdf_path = ''
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
layout = QVBoxLayout()
# Titel Label
self.label_title = QLabel(self.title, self)
self.label_title.setAlignment(Qt.AlignCenter)
layout.addWidget(self.label_title)
# Button für Quelldatei
self.btn_browse_source = QPushButton('Quelle Durchsuchen', self)
self.btn_browse_source.clicked.connect(self.openSourceFileDialog)
layout.addWidget(self.btn_browse_source)
# Button für Zieldatei
self.btn_browse_target = QPushButton('Ziel Durchsuchen', self)
self.btn_browse_target.clicked.connect(self.openTargetFileDialog)
layout.addWidget(self.btn_browse_target)
# Verkleinern-Button
self.btn_compress = QPushButton('Verkleinern', self)
self.btn_compress.clicked.connect(self.compressPDF)
layout.addWidget(self.btn_compress)
# Über-Button
self.btn_about = QPushButton('Über', self)
self.btn_about.clicked.connect(self.showAboutInfo)
layout.addWidget(self.btn_about)
self.setLayout(layout)
self.adjustSize() # Passt die Größe an die Widgets an
# Setzt die feste Breite des Fensters
self.setFixedWidth(500)
self.show()
def openSourceFileDialog(self):
options = QFileDialog.Options()
fileName, _ = QFileDialog.getOpenFileName(self, "Quelldatei auswählen", "", "PDF-Dateien (*.pdf)", options=options)
if fileName:
self.source_pdf_path = fileName
def openTargetFileDialog(self):
options = QFileDialog.Options()
fileName, _ = QFileDialog.getSaveFileName(self, "Zieldatei speichern", "", "PDF-Dateien (*.pdf)", options=options)
if fileName:
self.target_pdf_path = fileName
def showAboutInfo(self):
QMessageBox.information(self, "Über", "Hacker-Net Telekommunikation\nAm Wunderburgpark 5b\n26135 Oldenburg")
def compressPDF(self):
if self.source_pdf_path and self.target_pdf_path:
try:
# Rufen Sie die externe Komprimierungsfunktion auf
compress_pdf(self.source_pdf_path, self.target_pdf_path)
QMessageBox.information(self, "Erfolg", "PDF erfolgreich komprimiert und gespeichert!")
except Exception as e:
QMessageBox.warning(self, "Fehler", str(e))
else:
QMessageBox.warning(self, "Fehler", "Bitte wählen Sie sowohl eine Quell- als auch eine Zieldatei.")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
Das Script zum direct download hier
Das Programm icon, wenn an eine Executable draus erstellen möchte zum direct download hier
PDF komprimieren
Eine Ausführbare Datei daraus erstellen
PDF Selfhost Online Toools Stirling PDF Tools
PDF Selfhost Online Toools Stirling PDF Tools
Installation via Docker
Beschreibung:
https://github.com/Stirling-Tools/Stirling-PDF?tab=readme-ov-file