DeduplicateResources
Documentbewerking, Optimalisatie
Beschrijving
Vindt byte-identieke indirecte resourcestreams in het hele geladen document, verwijst elke verwijzing door naar een deterministische canonieke stream en verwijdert optioneel de duplicaat-indirecte objecten
Gelijkheid vereist zowel een ordononafhankelijke handtekening van het volledige streamwoordenboek als een exacte overeenkomst van de gecodeerde streampayload, zodat afbeeldingsmaskers, kleurruimten, decode-arrays, optional-content-koppelingen, structuuridentificatoren, metadata, filters en elke semantische woordenboekingang deel blijven van de beslissing
Syntaxis
Delphi
Function TPDFlib.DeduplicateResources(
Options: Integer= PDF_RESOURCE_DEDUP_DEFAULT): Integer; Overload;
Function TPDFlib.DeduplicateResources(Options: Integer;
Out Stats: TPDFlibResourceDedupStats): Integer; Overload;
Parameters
| Options | Een bitsgewijze combinatie van constanten voor deduplicatieopties van resources |
|---|---|
| Stats | Ontvangt tellers voor scannen, hashen, vergelijken, verwijzingen, payload, categorie en weesobjecten |
Opties voor resourcetype
| PDF_RESOURCE_DEDUP_IMAGES | Omvat image XObjects, expliciete afbeeldingsmaskers, soft-mask-afbeeldingen, alternatieve afbeeldingen en miniaturen |
|---|---|
| PDF_RESOURCE_DEDUP_FORMS | Omvat Form XObjects zoals herbruikbare paginagrafieken, annotatieappearances en transparantiegroepen |
| PDF_RESOURCE_DEDUP_PATTERNS | Omvat streamgebaseerde tiling patterns |
| PDF_RESOURCE_DEDUP_SHADINGS | Omvat streamgebaseerde mesh shadings |
| PDF_RESOURCE_DEDUP_FUNCTIONS | Omvat sampled function streams |
| PDF_RESOURCE_DEDUP_ICC_PROFILES | Omvat ICC-profielstreams waarnaar door ICCBased-kleurruimten of output intents wordt verwezen |
| PDF_RESOURCE_DEDUP_FONT_PROGRAMS | Omvat streams waarnaar via FontFile, FontFile2 of FontFile3 wordt verwezen |
| PDF_RESOURCE_DEDUP_CMAPS | Omvat CMap- en ToUnicode-streams |
| PDF_RESOURCE_DEDUP_TYPE3_CHARPROCS | Omvat Type 3-glyphprocedurestreams |
| PDF_RESOURCE_DEDUP_EMBEDDED_FILES | Omvat streams van ingesloten bestanden |
| PDF_RESOURCE_DEDUP_METADATA | Omvat metadatastreams |
| PDF_RESOURCE_DEDUP_POSTSCRIPT | Includes PostScript XObjects |
| PDF_RESOURCE_DEDUP_ALL_TYPES | Combineert alle twaalf resourcetypevlaggen |
Bewerkingsopties
| PDF_RESOURCE_DEDUP_DRY_RUN | Rapporteert duplicaatstreams en verwijzingen zonder de objectgraaf te wijzigen of objecten te verzamelen |
|---|---|
| PDF_RESOURCE_DEDUP_GARBAGE_COLLECT | Voert mark-and-sweep-verzameling uit nadat verwijzingen zijn doorgeschoven |
| PDF_RESOURCE_DEDUP_DEFAULT | Combineert alle resourcetypen met garbage collection |
Retourwaarden
| Positieve waarde | Het aantal geconsolideerde of door een dry run gemelde duplicaat-indirecte streams |
|---|---|
| 0 | Er is geen geschikte duplicaatstream gevonden of er is geen document geladen |
Opmerkingen
Het laagste objectnummer en de laagste generatie in elke exact-equivalentiegroep wordt de canonieke stream, waardoor herhaalde runs deterministisch zijn
De volgorde van woordenboeksleutels beïnvloedt gelijkheid niet, maar elke semantische sleutel en waarde wel, inclusief de identiteit van indirecte verwijzingen; een numerieke Length-ingang op toppniveau wordt vergeleken op haar opgeloste waarde, zodat equivalente directe en indirecte lengtevormen een resource kunnen delen
Resources met gelijke gedecodeerde inhoud maar verschillende filters of gecodeerde bytes blijven gescheiden, net als resources waarvan de woordenboeken naar verschillende geneste objecten verwijzen
Alle kandidaat-payloads worden één keer gehasht met SHA-256, en een byte-voor-byte-bevestiging loopt alleen binnen een bucket met overeenkomende hash en woordenboekhandtekening
De methode werkt op indirecte streams omdat ISO 32000 vereist dat streams indirecte objecten zijn en gedeelde resources worden weergegeven door indirecte verwijzingen
Gebruik de standaardinstelling na documentbewerking en vóór een volledige opslag om duplicaatobjectbytes direct terug te winnen
Laat bij een incrementele opslag PDF_RESOURCE_DEDUP_GARBAGE_COLLECT weg wanneer oude revisies fysiek intact moeten blijven; doorgeschoven verwijzingen verminderen duplicatie in de nieuwe revisie, maar kunnen geen bytes uit eerdere revisies verwijderen
Voorbeeld
var
Stats: TPDFlibResourceDedupStats;
Merged: Integer;
begin
Merged:= PDF.DeduplicateResources(
PDF_RESOURCE_DEDUP_DEFAULT, Stats);
PDF.SaveToFile('optimised.pdf');
end;
Zie ook
TPDFlibResourceDedupStats, PurgeUnusedResources, GarbageCollectObjects