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

OptionsEen bitsgewijze combinatie van constanten voor deduplicatieopties van resources
StatsOntvangt tellers voor scannen, hashen, vergelijken, verwijzingen, payload, categorie en weesobjecten

Opties voor resourcetype

PDF_RESOURCE_DEDUP_IMAGESOmvat image XObjects, expliciete afbeeldingsmaskers, soft-mask-afbeeldingen, alternatieve afbeeldingen en miniaturen
PDF_RESOURCE_DEDUP_FORMSOmvat Form XObjects zoals herbruikbare paginagrafieken, annotatieappearances en transparantiegroepen
PDF_RESOURCE_DEDUP_PATTERNSOmvat streamgebaseerde tiling patterns
PDF_RESOURCE_DEDUP_SHADINGSOmvat streamgebaseerde mesh shadings
PDF_RESOURCE_DEDUP_FUNCTIONSOmvat sampled function streams
PDF_RESOURCE_DEDUP_ICC_PROFILESOmvat ICC-profielstreams waarnaar door ICCBased-kleurruimten of output intents wordt verwezen
PDF_RESOURCE_DEDUP_FONT_PROGRAMSOmvat streams waarnaar via FontFile, FontFile2 of FontFile3 wordt verwezen
PDF_RESOURCE_DEDUP_CMAPSOmvat CMap- en ToUnicode-streams
PDF_RESOURCE_DEDUP_TYPE3_CHARPROCSOmvat Type 3-glyphprocedurestreams
PDF_RESOURCE_DEDUP_EMBEDDED_FILESOmvat streams van ingesloten bestanden
PDF_RESOURCE_DEDUP_METADATAOmvat metadatastreams
PDF_RESOURCE_DEDUP_POSTSCRIPTIncludes PostScript XObjects
PDF_RESOURCE_DEDUP_ALL_TYPESCombineert alle twaalf resourcetypevlaggen

Bewerkingsopties

PDF_RESOURCE_DEDUP_DRY_RUNRapporteert duplicaatstreams en verwijzingen zonder de objectgraaf te wijzigen of objecten te verzamelen
PDF_RESOURCE_DEDUP_GARBAGE_COLLECTVoert mark-and-sweep-verzameling uit nadat verwijzingen zijn doorgeschoven
PDF_RESOURCE_DEDUP_DEFAULTCombineert alle resourcetypen met garbage collection

Retourwaarden

Positieve waardeHet aantal geconsolideerde of door een dry run gemelde duplicaat-indirecte streams
0Er 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