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

Eine Ausführbare Datei daraus erstellen
