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