DeduplicateResources

Dokumentmanipulering, Optimering

Beskrivning

Hittar byteidentiska indirekta resursströmmar i hela det inlästa dokumentet, omdirigerar varje referens till en deterministisk kanonisk ström och kan på begäran ta bort de duplicerade indirekta objekten

Likhet kräver både en ordningsoberoende signatur av hela ström-dictionaryn och en exakt matchning av den kodade strömnyttolasten, så bildmasker, färgrymder, avkodningsarrayer, optional content-kopplingar, strukturidentifierare, metadata, filter och varje semantisk dictionarypost förblir del av beslutet

Syntax

Delphi

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

Parametrar

OptionsA bitwise combination of resource deduplication option constants
StatsTar emot skannings-, hashnings-, jämförelse-, referens-, nyttolast-, kategori- och föräldralöst objekt-räknare

Resurstypsalternativ

PDF_RESOURCE_DEDUP_IMAGESInkluderar bild-XObjects, explicita bildmasker, soft-mask-bilder, alternativa bilder och miniatyrbilder
PDF_RESOURCE_DEDUP_FORMSInkluderar Form XObjects som återanvändbar sidgrafik, annoteringsappearances och transparensgrupper
PDF_RESOURCE_DEDUP_PATTERNSIncludes stream-based tiling patterns
PDF_RESOURCE_DEDUP_SHADINGSIncludes stream-based mesh shadings
PDF_RESOURCE_DEDUP_FUNCTIONSIncludes sampled function streams
PDF_RESOURCE_DEDUP_ICC_PROFILESIncludes ICC profile streams referenced by ICCBased colour spaces or output intents
PDF_RESOURCE_DEDUP_FONT_PROGRAMSIncludes streams referenced through FontFile, FontFile2, or FontFile3
PDF_RESOURCE_DEDUP_CMAPSInkluderar CMap- och ToUnicode-strömmar
PDF_RESOURCE_DEDUP_TYPE3_CHARPROCSIncludes Type 3 glyph procedure streams
PDF_RESOURCE_DEDUP_EMBEDDED_FILESIncludes embedded-file streams
PDF_RESOURCE_DEDUP_METADATAIncludes metadata streams
PDF_RESOURCE_DEDUP_POSTSCRIPTIncludes PostScript XObjects
PDF_RESOURCE_DEDUP_ALL_TYPESCombines all twelve resource type flags

Operationsalternativ

PDF_RESOURCE_DEDUP_DRY_RUNRapporterar duplicerade strömmar och referenser utan att ändra objektgrafen eller samla objekt
PDF_RESOURCE_DEDUP_GARBAGE_COLLECTKör mark-and-sweep-samling efter att referenser omdirigerats
PDF_RESOURCE_DEDUP_DEFAULTKombinerar alla resurstyper med skräpsamling

Returvärden

Positive valueAntalet duplicerade indirekta strömmar som en torrkörning slog ihop eller rapporterade
0Ingen kvalificerad dubblettström hittades eller inget dokument är inläst

Anmärkningar

Lägsta objektnummer och generation i varje exakt-likhetsgrupp blir den kanoniska strömmen, vilket gör upprepade körningar deterministiska

Dictionarynyckelordning påverkar inte likhet, men varje semantisk nyckel och värde gör det, inklusive identitet hos indirekta referenser; en numerisk toppnivå Length-post jämförs via sitt upplösta värde så att ekvivalenta direkta och indirekta längdformer kan dela en resurs

Resurser med lika avkodat innehåll men olika filter eller kodade byte förblir separata, liksom resurser vars dictionarys refererar olika nästlade objekt

Alla kandidatnyttolaster hashas en gång med SHA-256, och en byte-för-byte-bekräftelse körs bara inuti en matchande hash- och dictionarysignatur-bucket

Metoden arbetar på indirekta strömmar eftersom ISO 32000 kräver att strömmar är indirekta objekt och delade resurser representeras av indirekta referenser

Använd standardvärdet efter dokumentredigering och före en fullständig sparning för att omedelbart återvinna duplicerade objektbyte

Vid en inkrementell sparning, utelämna PDF_RESOURCE_DEDUP_GARBAGE_COLLECT när gamla revisioner måste förbli fysiskt intakta; omdirigerade referenser minskar ändå duplicering i den nya revisionen men kan inte ta bort byte från tidigare revisioner

Exempel

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

Se även

TPDFlibResourceDedupStats, PurgeUnusedResources, GarbageCollectObjects