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
| Options | A bitwise combination of resource deduplication option constants |
|---|---|
| Stats | Tar emot skannings-, hashnings-, jämförelse-, referens-, nyttolast-, kategori- och föräldralöst objekt-räknare |
Resurstypsalternativ
| PDF_RESOURCE_DEDUP_IMAGES | Inkluderar bild-XObjects, explicita bildmasker, soft-mask-bilder, alternativa bilder och miniatyrbilder |
|---|---|
| PDF_RESOURCE_DEDUP_FORMS | Inkluderar Form XObjects som återanvändbar sidgrafik, annoteringsappearances och transparensgrupper |
| PDF_RESOURCE_DEDUP_PATTERNS | Includes stream-based tiling patterns |
| PDF_RESOURCE_DEDUP_SHADINGS | Includes stream-based mesh shadings |
| PDF_RESOURCE_DEDUP_FUNCTIONS | Includes sampled function streams |
| PDF_RESOURCE_DEDUP_ICC_PROFILES | Includes ICC profile streams referenced by ICCBased colour spaces or output intents |
| PDF_RESOURCE_DEDUP_FONT_PROGRAMS | Includes streams referenced through FontFile, FontFile2, or FontFile3 |
| PDF_RESOURCE_DEDUP_CMAPS | Inkluderar CMap- och ToUnicode-strömmar |
| PDF_RESOURCE_DEDUP_TYPE3_CHARPROCS | Includes Type 3 glyph procedure streams |
| PDF_RESOURCE_DEDUP_EMBEDDED_FILES | Includes embedded-file streams |
| PDF_RESOURCE_DEDUP_METADATA | Includes metadata streams |
| PDF_RESOURCE_DEDUP_POSTSCRIPT | Includes PostScript XObjects |
| PDF_RESOURCE_DEDUP_ALL_TYPES | Combines all twelve resource type flags |
Operationsalternativ
| PDF_RESOURCE_DEDUP_DRY_RUN | Rapporterar duplicerade strömmar och referenser utan att ändra objektgrafen eller samla objekt |
|---|---|
| PDF_RESOURCE_DEDUP_GARBAGE_COLLECT | Kör mark-and-sweep-samling efter att referenser omdirigerats |
| PDF_RESOURCE_DEDUP_DEFAULT | Kombinerar alla resurstyper med skräpsamling |
Returvärden
| Positive value | Antalet duplicerade indirekta strömmar som en torrkörning slog ihop eller rapporterade |
|---|---|
| 0 | Ingen 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