DeduplicateResources

Dokumentbehandling, optimering

Beskrivelse

Finder byteidentiske indirekte ressourcestreams i hele det indlæste dokument, omdirigerer hver reference til en deterministisk kanonisk stream og fjerner eventuelt de dublerede indirekte objekter

Lighed kræver både en rækkefølgeuafhængig signatur af hele streamordbogen og et nøjagtigt match af den kodede streamnyttelast, så billedmasker, farverum, afkodningsarrays, tilknytninger til valgfrit indhold, strukturidentifikatorer, metadata, filtre og hver semantisk ordbogspost forbliver en del af beslutningen

Syntaks

Delphi

Function TPDFlib.DeduplicateResources(
  Options: Integer= PDF_RESOURCE_DEDUP_DEFAULT): Integer; Overload;
Function TPDFlib.DeduplicateResources(Options: Integer;
  Out Stats: TPDFlibResourceDedupStats): Integer; Overload;

Parametre

OptionsEn bitvis kombination af indstillingskonstanter for ressourcededuplikering
StatsModtager tællere for scanning, hashing, sammenligning, referencer, payloads, kategorier og forældreløse objekter

Indstillinger for ressourcetyper

PDF_RESOURCE_DEDUP_IMAGESMedtager image XObjects, eksplicitte billedmasker, soft-mask-billeder, alternative billeder og miniaturer
PDF_RESOURCE_DEDUP_FORMSMedtager Form XObjects såsom genbrugelig sidegrafik, annotationers appearances og gennemsigtighedsgrupper
PDF_RESOURCE_DEDUP_PATTERNSOmfatter streambaserede flisemønstre
PDF_RESOURCE_DEDUP_SHADINGSMedtager strømbaserede mesh-shadings
PDF_RESOURCE_DEDUP_FUNCTIONSMedtager samplede funktionsstrømme
PDF_RESOURCE_DEDUP_ICC_PROFILESMedtager ICC-profilstrømme, der refereres til af ICCBased-farverum eller outputintentioner
PDF_RESOURCE_DEDUP_FONT_PROGRAMSOmfatter streams, der refereres via FontFile, FontFile2 eller FontFile3
PDF_RESOURCE_DEDUP_CMAPSMedtager CMap- og ToUnicode-strømme
PDF_RESOURCE_DEDUP_TYPE3_CHARPROCSOmfatter procedurestreams for Type 3-glyffer
PDF_RESOURCE_DEDUP_EMBEDDED_FILESMedtager streams for integrerede filer
PDF_RESOURCE_DEDUP_METADATAMedtager metadatastrømme
PDF_RESOURCE_DEDUP_POSTSCRIPTMedtager PostScript-XObjects
PDF_RESOURCE_DEDUP_ALL_TYPESKombinerer alle tolv flag for ressourcetyper

Operationsindstillinger

PDF_RESOURCE_DEDUP_DRY_RUNRapporterer dublerede streams og referencer uden at ændre objektgrafen eller indsamle objekter
PDF_RESOURCE_DEDUP_GARBAGE_COLLECTKører mark-and-sweep-indsamling, efter at referencer er omdirigeret
PDF_RESOURCE_DEDUP_DEFAULTKombinerer alle ressourcetyper med oprydning

Returværdier

Positive valueAntallet af dublerede indirekte strømme, der blev konsolideret eller rapporteret af en prøvekørsel
0Der blev ikke fundet nogen kvalificeret dubletstrøm, eller intet dokument er indlæst

Bemærkninger

Det laveste objektnummer og den laveste generation i hver gruppe med nøjagtig ækvivalens bliver den kanoniske strøm, hvilket gør gentagne kørsler deterministiske

Ordbogsnøglernes rækkefølge påvirker ikke ligheden, men det gør hver semantisk nøgle og værdi, herunder identiteten af indirekte referencer; en numerisk Length-post på øverste niveau sammenlignes efter sin opløste værdi, så tilsvarende direkte og indirekte længdeformer kan dele en ressource

Ressourcer med samme afkodede indhold, men forskellige filtre eller kodede bytes forbliver adskilte, ligesom ressourcer hvis ordbøger refererer til forskellige indlejrede objekter

Alle kandidatnyttelaster hashes én gang med SHA-256, og en byte-for-byte-bekræftelse udføres kun inden for en gruppe med matchende hash og ordbogssignatur

Metoden arbejder på indirekte streams, fordi ISO 32000 kræver, at streams er indirekte objekter, og delte ressourcer repræsenteres af indirekte referencer

Brug standardindstillingen efter dokumentredigering og før en fuld lagring for straks at genvinde bytes fra dublerede objekter

Ved en trinvis lagring skal PDF_RESOURCE_DEDUP_GARBAGE_COLLECT udelades, når gamle revisioner skal forblive fysisk intakte; omdirigerede referencer reducerer stadig dubletter i den nye revision, men kan ikke fjerne byte fra tidligere revisioner

Eksempel

var
  Stats: TPDFlibResourceDedupStats;
  Merged: Integer;
begin
  Merged:= PDF.DeduplicateResources(
    PDF_RESOURCE_DEDUP_DEFAULT, Stats);
  PDF.SaveToFile('optimised.pdf');
end;

Se også

TPDFlibResourceDedupStats, PurgeUnusedResources, GarbageCollectObjects