Zum Inhalt springen
getnextpdf.com

Pro Edition

Optimizer

Der Optimizer analysiert ein PDF auf doppelte Objekte und das Potenzial zur Bild-Neukomprimierung und meldet anschließend die geschätzte Größenreduktion. Drei Stufen wägen die Ausgabetreue gegen die Dateigröße ab.

Diese Fähigkeit wird mit NextPDF Pro (nextpdf/pro) ausgeliefert und aktiviert sich mit einem Lizenzumschlag der Pro-Stufe. Eine Bereitstellung ohne diese Berechtigung lädt die Klassen der Fähigkeit nicht. Editionen vergleichen und Lizenz erwerben.

Es gibt kein separates Lizenz-Flag pro Funktion. Die Optimierungsstufe (lossless, balanced, aggressive) ist ein Laufzeitparameter, kein Lizenzschalter.

Terminal-Fenster
composer require nextpdf/pro:^3

Der Code befindet sich im Namespace NextPDF\Pro\Optimizer.

PdfOptimizer koordiniert einen Objekt-Deduplizierer und einen Bild-Neukomprimierer. Bei gegebenen rohen PDF-Bytes findet er doppelte Objektgruppen (sofern die Stufe es zulässt), analysiert Bilder und schätzt die Komprimierung für jedes Bild bei der Zielqualität der Stufe. Er aggregiert die Findings zu einem OptimizationResult, das die ursprüngliche Größe, die geschätzte optimierte Größe, die entfernten Objekte sowie die Bildanzahlen vor und nach der Optimierung meldet.

OptimizationLevel definiert den Kompromiss: lossless bewahrt die Bildqualität und überspringt die Deduplizierung für byte-stabile Ausgabe; balanced dedupliziert und zielt auf 75 Prozent Bildqualität; aggressive dedupliziert, downsampelt und zielt auf 50 Prozent Qualität.

Der Optimizer analysiert, statt neu zu schreiben. analyze() schätzt die potenziellen Einsparungen und gibt ein OptimizationResult zurück, ohne die Eingabe zu verändern. Das hält den Durchlauf zerstörungsfrei und lässt Sie entscheiden, ob Sie ihn über den Writer anwenden. Die Stufenabstraktion bündelt den Kompromiss an einer Stelle: lossless gibt aus deduplicateStreams() false zurück, sodass die Ausgabe byte-identisch bleiben kann, während balanced und aggressive Bild-Streams bei niedrigeren Qualitätszielen neu komprimieren. Die erreichbaren Einsparungen hängen davon ab, wie ein Dokument seine Streams und Bilder bereits codiert, sodass das Modul eine Schätzung aus den tatsächlich vorhandenen Objekten meldet statt einer festen Schlagzahl. Design-Hintergrund: Streams und Filter.

  • analyze($pdfData) gibt ein OptimizationResult zurück; es verändert die Eingabe nicht.
  • Die lossless-Stufe überspringt die Stream-Deduplizierung, sodass die Ausgabe byte-stabil bleiben kann; balanced und aggressive aktivieren die Deduplizierung.
  • Die Bildqualitätsziele betragen 100, 75 und 50 Prozent für lossless, balanced bzw. aggressive.
  • Die geschätzte optimierte Größe fällt nie unter null und überschreitet nie das Original.
  • withLevel($level) gibt einen neuen Optimizer auf der angeforderten Stufe zurück; Instanzen werden nicht verändert.

Das Folgende spiegelt die dokumentierte öffentliche API wider. Das Repository liefert für dieses Modul kein ausführbares Beispiel aus.

use NextPDF\Pro\Optimizer\PdfOptimizer;
$result = (new PdfOptimizer())->analyze($pdfBytes);
use NextPDF\Pro\Optimizer\PdfOptimizer;
use NextPDF\Pro\Optimizer\OptimizationLevel;
$optimizer = new PdfOptimizer(OptimizationLevel::Aggressive);
$result = $optimizer->analyze($pdfBytes);
$savings = $result->originalSize > 0
? (1 - $result->optimizedSize / $result->originalSize) * 100
: 0.0;
  • analyze() schätzt das Potenzial; kombinieren Sie es mit dem Writer-Modul, um ein optimiertes Dokument zu erzeugen.
  • Die lossless-Stufe liefert absichtlich nur eine geringe Größenreduktion, weil sie die Qualität bewahrt und die Deduplizierung überspringt.
  • Die Bildanzahl nach der Optimierung spiegelt durch Deduplizierung entfernte Bilder wider, nicht verworfene Bilder.

Die Analyse ist linear in der Eingabegröße plus den Kosten für das Scannen der Objekt- und Bildstrukturen. Die Stufe steuert, wie aggressiv die Schätzungen für Deduplizierung und Neukomprimierung ausfallen. Es gibt keine veröffentlichte feste Größenreduktionszahl; die Ergebnisse hängen vollständig vom Dokument ab. Messen Sie mit repräsentativen Dokumenten.

Behandeln Sie die Eingabe als nicht vertrauenswürdig. Die Analyse bleibt schreibgeschützt und führt keine eingebetteten Inhalte aus. Dieses Modul protokolliert keinen Dokumentinhalt.

Die Optimierung arbeitet auf dem von ISO 32000-2 definierten PDF-Objekt- und Bildmodell; die Quelle annotiert die relevanten Klauseln. Der RAG-Korpus war zum Zeitpunkt der Erstellung nicht verfügbar, sodass diese Seite keine externen Klausel-Identifikatoren behauptet und Konformitätsaussagen auf das durch die Tests des Moduls verifizierte Verhalten beschränkt.

Enterprise ändert das Verhalten von Optimizer nicht. Enterprise ergänzt höherstufige Compliance- und Archivierungsfunktionen, die separat dokumentiert sind; sie sind nicht erforderlich, um das Optimierungspotenzial zu analysieren.

Ohne Pro verwenden Sie die Basisoptimierung von NextPDF Core; die Objekt-Deduplizierung und die einstellbare Bild-Neukomprimierungsanalyse sind Pro-Ergänzungen..

Diese Seite dokumentiert ausschließlich extern beobachtbares Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismustabellen, Runbook-Dateinamen und Ticket-Präfixe sind außerhalb des Geltungsbereichs.