DeduplicateResources

Manipulace s dokumenty, optimalizace

Popis

Najde byte-identické nepřímé zdrojové proudy v celém načteném dokumentu, přesměruje každou referenci na deterministický kanonický proud a volitelně odstraní duplicitní nepřímé objekty

Rovnost vyžaduje jak pořadí-nezávislý podpis kompletního slovníku proudu, tak přesnou shodu kódované datové části proudu, takže masky obrázků, barevné prostory, dekódovací pole, vazby volitelného obsahu, identifikátory struktury, metadata, filtry a každá sémantická položka slovníku zůstávají součástí rozhodnutí

Syntaxe

Delphi

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

Parametry

OptionsBitová kombinace konstant voleb deduplikace prostředků
StatsPřijímá čítače skenování, hashování, porovnávání, referencí, datové části, kategorií a osamocených objektů

Volby typu prostředku

PDF_RESOURCE_DEDUP_IMAGESZahrnuje Image XObject, explicitní masky obrázků, obrázky soft-masek, alternativní obrázky a miniatury
PDF_RESOURCE_DEDUP_FORMSZahrnuje Form XObject, jako je znovu použitelná grafika stránek, vzhledy anotací a skupiny průhlednosti
PDF_RESOURCE_DEDUP_PATTERNSZahrnuje dlaždicové vzory založené na proudech
PDF_RESOURCE_DEDUP_SHADINGSZahrnuje mesh stínování založená na proudech
PDF_RESOURCE_DEDUP_FUNCTIONSZahrnuje proudy vzorkovaných funkcí
PDF_RESOURCE_DEDUP_ICC_PROFILESZahrnuje proudy profilů ICC odkazované barevnými prostory ICCBased nebo výstupními záměry
PDF_RESOURCE_DEDUP_FONT_PROGRAMSZahrnuje proudy odkazované přes FontFile, FontFile2 nebo FontFile3
PDF_RESOURCE_DEDUP_CMAPSZahrnuje proudy CMap a ToUnicode
PDF_RESOURCE_DEDUP_TYPE3_CHARPROCSZahrnuje proudy procedur glyfů Type 3
PDF_RESOURCE_DEDUP_EMBEDDED_FILESZahrnuje proudy vložených souborů
PDF_RESOURCE_DEDUP_METADATAZahrnuje proudy metadat
PDF_RESOURCE_DEDUP_POSTSCRIPTZahrnuje XObject PostScript
PDF_RESOURCE_DEDUP_ALL_TYPESKombinuje všech dvanáct příznaků typů prostředků

Volby operace

PDF_RESOURCE_DEDUP_DRY_RUNHlásí duplicitní proudy a reference, aniž by měnila graf objektů nebo sbírala objekty
PDF_RESOURCE_DEDUP_GARBAGE_COLLECTSpustí sbírání mark-and-sweep poté, co se přesměrují reference
PDF_RESOURCE_DEDUP_DEFAULTKombinuje všechny typy prostředků s úklidem odpadu

Návratové hodnoty

Positive valuePočet duplicitních nepřímých proudů konsolidovaných nebo nahlášených suchým během
0Nenalezen žádný vyhovující duplicitní proud nebo není načten žádný dokument

Poznámky

Nejnižší číslo objektu a generace v každé skupině přesné ekvivalence se stane kanonickým proudem, což činí opakovaná běžení deterministickými

Pořadí klíčů slovníku neovlivňuje rovnost, ale každý sémantický klíč a hodnota ano, včetně identity nepřímého odkazu; číselná položka Length nejvyšší úrovně se porovnává podle rozlišené hodnoty, takže ekvivalentní přímé a nepřímé formy délky mohou sdílet prostředek

Prostředky se stejným dekódovaným obsahem, ale jinými filtry či kódovanými bajty zůstávají oddělené, stejně jako prostředky, jejichž slovníky odkazují na různé vnořené objekty

Všechny kandidátské datové části se jednou proházejí SHA-256 a potvrzení bajt po bajtu běží jen uvnitř shodného kyblíku hashe a podpisu slovníku

Metoda pracuje na nepřímých proudech, protože ISO 32000 vyžaduje, aby proudy byly nepřímé objekty, a sdílené prostředky se reprezentují nepřímými odkazy

Použijte výchozí po úpravě dokumentu a před plným ukládáním, abyste hned získali zpět duplicitní bajty objektů

Při inkrementálním ukládání vynechejte PDF_RESOURCE_DEDUP_GARBAGE_COLLECT, když musí staré revize zůstat fyzicky nedotčené; přesměrované reference stále snižují duplicitu v nové revizi, ale nemohou odstranit bajty z dřívějších revizí

Příklad

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

Viz také

TPDFlibResourceDedupStats, PurgeUnusedResources, GarbageCollectObjects