Pamięć podręczna relacji AcroForm

HotPDF utrzymuje lokalny dla dokumentu dwukierunkowy indeks końcowych pól AcroForm, kwalifikowanych nazw pól, adnotacji widgetów, numerów porządkowych widgetów i pozycji stron

Zachowanie wyszukiwania

Lookup po indeksie pola i nazwie kwalifikowanej używa po pierwszej budowie bezpośrednich tablic i mapy nazw open-addressed bez rozróżniania wielkości liter

Pole nadrzędne może dostarczać odziedziczone wpisy /FT, /Ff i /Opt, nie będąc polem terminalnym; nazwane dzieci typu group.a i group.b pozostają osobnymi, indeksowanymi polami

Wyszukiwanie po indeksie pola i po kwalifikowanej nazwie używa bezpośrednich tablic oraz mapy nazw o otwartym adresowaniu bez rozróżniania wielkości liter po pierwszym zbudowaniu

GetLoadedFormFieldWidgetPageIndex rozwiązuje jeden numer porządkowy widgetu na jego stronę, podczas gdy GetLoadedFormFieldIndexForAnnotation odwzorowuje adnotację strony z powrotem na jej pole i numer porządkowy widgetu

Członkostwo w tablicy adnotacji ma pierwszeństwo przed wpisem widgetu /P, a pierwsza pasująca strona w kolejności dokumentu wygrywa w przypadku nieprawidłowego zduplikowanego członkostwa

Widgety pominięte w /AcroForm /Fields są indeksowane jako osierocone do celów diagnostycznych, ale nie są udostępniane jako syntetyczne pola formularza

Budowanie i mutacja

Pamięć podręczna jest budowana leniwie w jednym przejściu drzewa pól oraz jednym przejściu adnotacji stron

Tworzenie załadowanego pola rozszerza prawidłową pamięć podręczną przyrostowo, podczas gdy usuwanie pola, zmiana nazwy, przenoszenie widgetu, usuwanie adnotacji, rejestracja scalania, scalanie pól XFA i mutacja tablicy stron unieważniają ją przed zmianą grafu

Następne zapytanie o relacje przebudowuje się z bieżącego grafu obiektów, w tym widgety, których wpis /P jest nieobecny

Usunięcie jednego dziecka terminalnego usuwa jego własne widgety i wpis w drzewie pól, zachowując rodzeństwo i jego odziedziczone ustawienia

Wywołaj InvalidateLoadedFormRelationshipCache po zmianie słowników AcroForm, pola, widgetu, strony /Annots, /Parent, /Kids lub /P przez surowe API obiektów

Wydajność i własność

Mapy nazw i obiektów utrzymują współczynnik obciążenia poniżej jednej drugiej i zapewniają oczekiwany ciepły czas wyszukiwania stały czasowo

Bramka regresji buduje 10 000 załadowanych pól, dowodzi liniowej telemetrii przejścia i wymaga, aby powtarzane wyszukiwanie nazw było co najmniej 100 razy szybsze niż zimne budowanie plus wyszukiwanie na Win32 i Win64

Pamięć podręczna przechowuje nieposiadające wskaźniki obiektów, a dostęp do grafu załadowanego dokumentu pozostaje serializowany przez wywołującego

Zobacz też: GetLoadedFormFieldWidgetPageIndex, GetLoadedFormFieldIndexForAnnotation, InvalidateLoadedFormRelationshipCache, GetLoadedFormRelationshipCacheStatistics