Pro edycja
Optymalizator
W skrócie
Dział zatytułowany „W skrócie”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.
Dostępność i licencjonowanie
Dział zatytułowany „Dostępność i licencjonowanie”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.
Instalacja
Dział zatytułowany „Instalacja”composer require nextpdf/pro:^3Kod znajduje się w przestrzeni nazw NextPDF\Pro\Optimizer.
Przegląd koncepcyjny
Dział zatytułowany „Przegląd koncepcyjny”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.
Dlaczego działa właśnie tak
Dział zatytułowany „Dlaczego działa właśnie tak”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.
Kontrakt zachowania
Dział zatytułowany „Kontrakt zachowania”analyze($pdfData)zwracaOptimizationResult; 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.
Przykład kodu — Szybki start
Dział zatytułowany „Przykład kodu — Szybki start”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);Przykład kodu — Produkcja
Dział zatytułowany „Przykład kodu — Produkcja”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;Przypadki brzegowe i pułapki
Dział zatytułowany „Przypadki brzegowe i pułapki”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.
Wydajność
Dział zatytułowany „Wydajność”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.
Uwagi dotyczące bezpieczeństwa
Dział zatytułowany „Uwagi dotyczące bezpieczeństwa”Traktuj wejście jako niezaufane. Analiza pozostaje tylko do odczytu i nie wykonuje osadzonej zawartości. Ten moduł nie loguje żadnej zawartości dokumentu.
Konformancja
Dział zatytułowany „Konformancja”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.
Uwaga o granicy Enterprise
Dział zatytułowany „Uwaga o granicy Enterprise”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.
Rozwiązanie awaryjne / alternatywa Core
Dział zatytułowany „Rozwiązanie awaryjne / alternatywa Core”Bez Pro użyj podstawowej optymalizacji NextPDF Core; deduplikacja obiektów i regulowana analiza ponownej kompresji obrazów to dodatki Pro..
Granica publikacji
Dział zatytułowany „Granica publikacji”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.