PurgeUnusedResources

Przetwarzanie dokumentów, Optymalizacja

Opis

Skanuje wybrane warstwy zawartości strony i ich przechodnie zależności zasobów, a następnie usuwa nazwane zasoby, do których nie ma odwołań w odpowiednim zakresie zasobów

Opcje domyślne przechodzą rekurencyjnie do Form XObject, wzorców kafelkowych, glifów Type 3, wyglądów adnotacji i grup miękkich masek, zachowują przestrzenie kolorów wskazywane przez obrazy i inne zasoby, usuwają przestarzałe tablice /ProcSet i puste kategorie zasobów oraz zbierają obiekty pośrednie, które po czyszczeniu stały się nieosiągalne

Składnia

Delphi

Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString= '';
  Options: Integer= PDF_RESOURCE_PURGE_DEFAULT): Integer; Overload;
Function TPDFlib.PurgeUnusedResources(Const PageRange: WideString;
  Options: Integer; Out Stats: TPDFlibResourcePurgeStats): Integer; Overload;

Parametry

PageRangeZakres stron liczony od 1, używający tej samej składni co pozostałe interfejsy API zakresów stron, albo pusty ciąg dla wszystkich stron
OptionsKombinacja bitowa stałych opcji czyszczenia zasobów
StatsOtrzymuje liczniki skanowania, zabezpieczeń, usuwania i osieroconych obiektów

Opcje

PDF_RESOURCE_PURGE_RECURSE_FORMSSkanuje wskazywane Form XObject i respektuje ich własny lub dziedziczony zakres zasobów
PDF_RESOURCE_PURGE_REMOVE_PROCSETUsuwa przestarzałe tablice /ProcSet
PDF_RESOURCE_PURGE_REMOVE_EMPTYUsuwa puste słowniki kategorii zasobów
PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWNPozwala na czyszczenie, gdy strumień zawartości zawiera nieznany operator
PDF_RESOURCE_PURGE_DRY_RUNRaportuje usuwalne nazwane wpisy bez modyfikowania dokumentu
PDF_RESOURCE_PURGE_GARBAGE_COLLECTZbiera obiekty pośrednie, które po czyszczeniu aktywnym stały się nieosiągalne
PDF_RESOURCE_PURGE_RECURSE_PATTERNSSkanuje zawartość i niezależny zakres zasobów wskazywanych wzorców kafelkowych
PDF_RESOURCE_PURGE_RECURSE_TYPE3Skanuje każdy strumień CharProc we wskazywanych czcionkach Type 3 przy użyciu zakresu zasobów czcionki
PDF_RESOURCE_PURGE_RECURSE_APPEARANCESSkanuje strumienie zwykłego wyglądu, wyglądu po najechaniu, wyglądu po naciśnięciu i nazwanych stanów adnotacji
PDF_RESOURCE_PURGE_RECURSE_SOFT_MASKSSkanuje strumienie grup przezroczystości wskazywane przez słowniki miękkich masek ExtGState
PDF_RESOURCE_PURGE_SCAN_IMAGE_DEPENDENCIESSprawdza XObject obrazów, maski jawne, obrazy miękkich masek i obrazy alternatywne pod kątem zależności zagnieżdżonych
PDF_RESOURCE_PURGE_RECURSE_DEPENDENCIESŁączy analizę zależności wzorców, Type 3, wyglądów, miękkich masek i obrazów
PDF_RESOURCE_PURGE_DEFAULTŁączy całą analizę zależności, rekurencję Form, usuwanie ProcSet, usuwanie pustych kategorii i zbieranie pamięci

Wartości zwracane

Live cleanupLiczba usuniętych nazwanych wpisów zasobów
Dry runLiczba nazwanych wpisów zasobów, które można usunąć
0Brak usuwalnych nazwanych wpisów, brak wybranych stron albo brak wczytanego dokumentu

Uwagi

Skanowanie rozpoznaje odwołania Font, XObject, ExtGState, ColorSpace, Pattern, Shading i Properties, w tym niestandardowe przestrzenie kolorów w słownikach obrazów śródliniowych oraz zależności pośrednie przenoszone przez obiekty zasobów

Domknięcie zależności obejmuje przestrzenie kolorów obrazów i cieniowań, bazy Indexed, alternatywy Separation i DeviceN, przestrzenie bazowe Pattern, alternatywy ICCBased, zawartość wzorców kafelkowych, wszystkie CharProc Type 3, stany wyglądów adnotacji, grupy miękkich masek ExtGState, maski obrazów, obrazy miękkich masek i obrazy alternatywne

Nazwy PDF są dopasowywane z rozróżnianiem wielkości liter, a wszystkie warstwy zawartości każdej wybranej strony są łączone przed czyszczeniem

Nieprawidłowe strumienie i nieznane operatory zachowują pełny zakres zasobów, chyba że ustawiono PDF_RESOURCE_PURGE_AGGRESSIVE_UNKNOWN

Współdzielone i dziedziczone słowniki zasobów są kopiowane przed modyfikacją, dzięki czemu czyszczenie pozostaje lokalne dla wybranej strony, Form, wzorca, czcionki Type 3, wyglądu lub grupy miękkiej maski

Powtarzające się strumienie i wpisy zależności ponownie wykorzystują buforowane wyniki analizy, natomiast limity głębokości i śledzenie aktywnych strumieni kończą nieprawidłowe cykle zasobów

Anulowanie jest dostępne za pomocą Abort z procedury obsługi OnProgress

Przykład

var
  Stats: TPDFlibResourcePurgeStats;
  Removed: Integer;
begin
  Removed:= PDF.PurgeUnusedResources('1-20',
    PDF_RESOURCE_PURGE_DEFAULT, Stats);
  PDF.SaveToFile('optimised.pdf');
end;

Zobacz również

TPDFlibResourcePurgeStats, GarbageCollectObjects, OnProgress, Abort