惰性頁面樹載入

HotPDF 可以把一般已載入的 PDF 頁面樹保留成精簡的佔位表,只在 API 第一次需要某頁時才解析該頁

啟用條件

LazyPageTreeThreshold 預設為 4096 頁,適用於根節點具備可用 /Count 與 /Kids 結構的有效頁面樹

載入前把門檻設為 0 可停用惰性頁面樹處理

低於門檻的檔案與格式錯誤的樹,繼續走既有的立即復原路徑

隨機存取

第一次存取某頁時會沿著子樹的 /Count 值跳過不相關的分支,並透過文件本地的開放定址索引解析間接物件

解析出的頁面會存進它的佔位槽,重複存取就是直接的快取命中

一般的已載入頁面 API 會透明地具現化要求的頁面,MaterializeLoadedPage 則讓呼叫端明確預先準備已知的頁面

完整展開與變更

MaterializeAllLoadedPages 依標準頁面順序展開其餘的樹

在結構上新增、刪除、複製、取代、移動、反轉、交換、重建或儲存已載入頁面的操作,都會先完整展開再變更或序列化頁面圖形

這樣既保留既有的變更與儲存語意,讀取導向的存取成本也只與走訪的分支深度成正比

遙測

GetLoadedPageTreeStatistics 回報佔位儲存、已具現化頁面、遍歷深度與工作量、物件索引容量、快取活動與完整展開次數,而且不會強制具現化

回歸閘在支援的 Windows 目標上涵蓋 100,000 頁,工作集成長上限 256 MiB,首次隨機存取上限 500 ms

另請參閱: LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics