Pro editie
Optimizer
In het kort
Sectie met titel “In het kort”De Optimizer analyseert een PDF op dubbele objecten en potentieel voor afbeeldingshercompressie, en rapporteert vervolgens de geschatte grootteverlaging. Drie niveaus wegen uitvoergetrouwheid af tegen bestandsgrootte.
Beschikbaarheid en licentiëring
Sectie met titel “Beschikbaarheid en licentiëring”Deze functionaliteit wordt geleverd in NextPDF Pro (nextpdf/pro) en wordt geactiveerd met een licentie-envelop van het Pro-niveau. Een deployment zonder die entitlement laadt de klassen van de functionaliteit niet. Vergelijk edities en verkrijg een licentie.
Er is geen aparte per-feature licentie-flag. Het optimalisatieniveau (lossless, balanced, aggressive) is een runtime-parameter, geen licentie-switch.
Installatie
Sectie met titel “Installatie”composer require nextpdf/pro:^3De code bevindt zich onder de namespace NextPDF\Pro\Optimizer.
Conceptueel overzicht
Sectie met titel “Conceptueel overzicht”PdfOptimizer coördineert een object-deduplicator en een afbeeldingshercompressor. Gegeven ruwe PDF-bytes vindt deze groepen dubbele objecten (wanneer het niveau dat toestaat), analyseert afbeeldingen en schat de compressie voor elke afbeelding op de doelkwaliteit van het niveau. De bevindingen worden samengevoegd tot een OptimizationResult die de oorspronkelijke grootte, de geschatte geoptimaliseerde grootte, het aantal verwijderde objecten en de afbeeldingstellingen voor en na rapporteert.
OptimizationLevel definieert de afweging: lossless behoudt de afbeeldingskwaliteit en slaat deduplicatie over voor byte-stabiele uitvoer; balanced dedupliceert en richt zich op 75 procent afbeeldingskwaliteit; aggressive dedupliceert, downsamplet en richt zich op 50 procent kwaliteit.
Waarom het zo werkt
Sectie met titel “Waarom het zo werkt”De optimizer analyseert in plaats van te herschrijven. analyze() schat de potentiële besparingen en retourneert een OptimizationResult zonder de invoer te muteren. Zo blijft de pass niet-destructief en kun je zelf beslissen of je hem via de Writer toepast. De niveau-abstractie houdt de afweging op één plek: lossless retourneert false uit deduplicateStreams() zodat de uitvoer byte-identiek kan blijven, terwijl balanced en aggressive afbeeldingsstreams hercomprimeren op lagere kwaliteitsdoelen. De haalbare besparing hangt af van hoe een document zijn streams en afbeeldingen al codeert, dus de module rapporteert een schatting op basis van de objecten die daadwerkelijk aanwezig zijn in plaats van een vast kopcijfer. Ontwerpachtergrond: Streams en filters.
Gedragscontract
Sectie met titel “Gedragscontract”analyze($pdfData)retourneert eenOptimizationResult; het muteert de invoer niet.- Het lossless-niveau slaat stream-deduplicatie over zodat de uitvoer byte-stabiel kan blijven; balanced en aggressive schakelen deduplicatie in.
- De afbeeldingskwaliteitsdoelen zijn respectievelijk 100, 75 en 50 procent voor lossless, balanced en aggressive.
- De geschatte geoptimaliseerde grootte komt nooit onder nul en overschrijdt nooit de oorspronkelijke grootte.
withLevel($level)retourneert een nieuwe optimizer op het gevraagde niveau; instances worden niet gemuteerd.
Codevoorbeeld — Snelstart
Sectie met titel “Codevoorbeeld — Snelstart”Het volgende weerspiegelt de gedocumenteerde publieke API. De repository levert geen uitvoerbaar voorbeeld voor deze module.
use NextPDF\Pro\Optimizer\PdfOptimizer;
$result = (new PdfOptimizer())->analyze($pdfBytes);Codevoorbeeld — Productie
Sectie met titel “Codevoorbeeld — Productie”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;Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”analyze()schat het potentieel; combineer het met de Writer-module om een geoptimaliseerd document te produceren.- Het lossless-niveau levert bewust weinig grootteverlaging op omdat het de kwaliteit behoudt en deduplicatie overslaat.
- Image-count-after weerspiegelt afbeeldingen die via deduplicatie zijn verwijderd, niet afbeeldingen die zijn weggelaten.
Prestaties
Sectie met titel “Prestaties”Analyse is lineair in invoergrootte plus de kosten van het scannen van object- en afbeeldingsstructuren. Het niveau bepaalt hoe agressief de deduplicatie- en hercompressieschattingen zijn. Er is geen gepubliceerd vast grootteverlagingscijfer; resultaten hangen volledig af van het document. Meet met representatieve documenten.
Beveiligingsnotities
Sectie met titel “Beveiligingsnotities”Behandel invoer als niet-vertrouwd. Analyse blijft alleen-lezen en voert geen ingebedde inhoud uit. Deze module logt geen documentinhoud.
Conformiteit
Sectie met titel “Conformiteit”Optimalisatie werkt op het PDF-object- en afbeeldingsmodel zoals gedefinieerd door ISO 32000-2; de bron annoteert de relevante clausules. Het RAG-corpus was tijdens het auteuren niet beschikbaar, dus deze pagina claimt geen externe clausule-identifiers en beperkt conformiteitsverklaringen tot gedrag dat door de tests van de module is geverifieerd.
Enterprise-grensnotitie
Sectie met titel “Enterprise-grensnotitie”Enterprise verandert het Optimizer-gedrag niet. Enterprise voegt hogere compliance- en archiveringsfuncties toe die afzonderlijk zijn gedocumenteerd; ze zijn niet vereist om optimalisatiepotentieel te analyseren.
Core-fallback / alternatief
Sectie met titel “Core-fallback / alternatief”Zonder Pro gebruik je de basisoptimalisatie van NextPDF Core; object-deduplicatie en instelbare afbeeldingshercompressie-analyse zijn Pro-toevoegingen..
Publicatiegrens
Sectie met titel “Publicatiegrens”Deze pagina documenteert alleen extern waarneembaar gedrag en het ondersteunde publieke API-oppervlak. Interne namespace-paden, helperklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten de scope.