Przejdź do głównej zawartości
getnextpdf.com

Pro edycja

Optymalizator

Optimizer analizuje plik PDF pod kątem zduplikowanych obiektów i potencjału ponownej kompresji obrazów, a następnie raportuje szacowaną redukcję rozmiaru. Trzy poziomy równoważą wierność wyniku z rozmiarem pliku.

Ta funkcja jest dostarczana w NextPDF Pro (nextpdf/pro) i aktywuje się wraz z kopertą licencyjną warstwy Pro. Wdrożenie bez tego uprawnienia nie ładuje klas tej funkcji. Porównaj edycje i uzyskaj licencję.

Nie ma oddzielnej flagi licencyjnej dla poszczególnych funkcji. Poziom optymalizacji (lossless, balanced, aggressive) to parametr czasu wykonania, a nie przełącznik licencyjny.

Okno terminala
composer require nextpdf/pro:^3

Kod znajduje się w przestrzeni nazw NextPDF\Pro\Optimizer.

PdfOptimizer koordynuje deduplikator obiektów i kompresor obrazów. Mając surowe bajty PDF, znajduje grupy zduplikowanych obiektów (gdy poziom na to pozwala), analizuje obrazy i szacuje kompresję każdego obrazu przy docelowej jakości danego poziomu. Agreguje ustalenia w OptimizationResult raportujący rozmiar pierwotny, szacowany rozmiar zoptymalizowany, usunięte obiekty oraz liczbę obrazów przed i po.

OptimizationLevel definiuje kompromis: lossless zachowuje jakość obrazów i pomija deduplikację dla stabilnego bajtowo wyniku; balanced deduplikuje i celuje w 75 procent jakości obrazu; aggressive deduplikuje, zmniejsza rozdzielczość i celuje w 50 procent jakości.

Optymalizator analizuje, a nie przepisuje. analyze() szacuje potencjalne oszczędności i zwraca OptimizationResult bez modyfikowania wejścia. Dzięki temu przebieg pozostaje nieniszczący i pozwala Ci zdecydować, czy zastosować go przez Writer. Abstrakcja poziomu przechowuje kompromis w jednym miejscu: lossless zwraca false z deduplicateStreams(), aby wynik mógł pozostać bajtowo identyczny, podczas gdy balanced i aggressive ponownie kompresują strumienie obrazów przy niższych celach jakości. Osiągalne oszczędności zależą od tego, jak dokument już koduje swoje strumienie i obrazy, więc moduł raportuje szacunek na podstawie faktycznie obecnych obiektów, a nie stałej nagłówkowej wartości. Tło projektowe: Strumienie i filtry.

  • analyze($pdfData) zwraca OptimizationResult; nie modyfikuje wejścia.
  • Poziom lossless pomija deduplikację strumieni, aby wynik mógł pozostać stabilny bajtowo; balanced i aggressive włączają deduplikację.
  • Docelowe wartości jakości obrazu to odpowiednio 100, 75 i 50 procent dla lossless, balanced i aggressive.
  • Szacowany rozmiar zoptymalizowany nigdy nie spada poniżej zera ani nie przekracza rozmiaru pierwotnego.
  • withLevel($level) zwraca nowy optymalizator na żądanym poziomie; instancje nie są modyfikowane.

Poniższy fragment odzwierciedla udokumentowane publiczne API. Repozytorium nie dostarcza uruchamialnego przykładu dla tego modułu.

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() szacuje potencjał; połącz je z modułem Writer, aby wytworzyć zoptymalizowany dokument.
  • Poziom lossless celowo daje niewielką redukcję rozmiaru, ponieważ zachowuje jakość i pomija deduplikację.
  • Liczba obrazów po odzwierciedla obrazy usunięte przez deduplikację, a nie obrazy odrzucone.

Analiza jest liniowa względem rozmiaru wejścia plus koszt skanowania struktur obiektów i obrazów. Poziom steruje tym, jak agresywne są szacunki deduplikacji i ponownej kompresji. Nie ma opublikowanej stałej wartości redukcji rozmiaru; wyniki zależą całkowicie od dokumentu. Mierz na reprezentatywnych dokumentach.

Traktuj wejście jako niezaufane. Analiza pozostaje tylko do odczytu i nie wykonuje osadzonej zawartości. Ten moduł nie loguje żadnej zawartości dokumentu.

Optymalizacja działa na modelu obiektów i obrazów PDF zdefiniowanym przez ISO 32000-2; źródło opisuje odpowiednie klauzule. Korpus RAG był niedostępny w czasie tworzenia, więc ta strona nie podaje żadnych zewnętrznych identyfikatorów klauzul i ogranicza twierdzenia o konformancji do zachowania zweryfikowanego testami modułu.

Enterprise nie zmienia zachowania Optimizera. Enterprise dodaje wyższej warstwy funkcje zgodności i archiwizacji udokumentowane osobno; nie są one wymagane do analizy potencjału optymalizacji.

Bez Pro użyj podstawowej optymalizacji NextPDF Core; deduplikacja obiektów i regulowana analiza ponownej kompresji obrazów to dodatki Pro..

Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz obsługiwaną publiczną powierzchnię API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków i prefiksy zgłoszeń są poza zakresem.