THPDFLinearizedPageRangePlan Record
漸進式讀取線性化檔案單一頁面的位元組範圍規劃:狀態與診斷、解析出的標頭偏移、頁面物件資訊、提示串流位置、共用群組資訊、傳輸總量,以及排序後的位元組範圍
宣告
THPDFLinearizedPageRangePlan= record
Status: THPDFLinearizedPagePlanStatus;
FileLength: Int64;
PageIndex: Integer;
FirstPageIndex: Integer;
PageCount: Integer;
FirstPageEndOffset: Int64;
MainXRefOffset: Int64;
PageObjectNumber: Integer;
PageObjectCount: Integer;
PageOffset: Int64;
PageLength: Int64;
PrimaryHintOffset: Int64;
PrimaryHintLength: Int64;
OverflowHintOffset: Int64;
OverflowHintLength: Int64;
SharedGroupCount: Integer;
CrossReferenceEntryCount: Integer;
HintBytesDecoded: Int64;
RequiredBytes: Int64;
TransferRatio: Double;
RangeCount: Integer;
DependencyRangeCount: Integer;
AllRangesAvailable: boolean;
UsesCrossReferenceStream: boolean;
HintEncoding: THPDFLinearizedHintEncoding;
Ranges: THPDFLinearizedByteRangeArray;
DependencyRanges: THPDFLinearizedByteRangeArray;
Diagnostic: AnsiString;
end;
單元
HPDFDoc
欄位
| 欄位 | 用途 |
|---|---|
Status | THPDFLinearizedPagePlanStatus 結果:就緒、未線性化、不支援的交叉參照、超出上限或範圍不可用 |
FileLength | 規劃來源的總大小 |
PageIndex | 要求的零基頁索引,僅標頭的引導規劃為 -1 |
FirstPageIndex / PageCount | 從線性化標頭解析出的首頁索引與頁數 |
FirstPageEndOffset / MainXRefOffset | 標頭的 /E 與 /T 值:首頁區段結尾與主交叉參照偏移 |
PageObjectNumber / PageObjectCount | 要求頁面的物件編號,及其物件清單中的物件數 |
PageOffset / PageLength | 頁面區段在檔案中的位元組範圍 |
PrimaryHintOffset / PrimaryHintLength | 主提示串流的位置 |
OverflowHintOffset / OverflowHintLength | 溢出提示串流的位置,沒有時為零與空 |
SharedGroupCount / CrossReferenceEntryCount | 為該頁面規劃的共用物件群組數,以及規劃涵蓋的交叉參照項目數 |
HintBytesDecoded | 建立規劃時實際解碼的提示承載位元組數 |
RequiredBytes | 轉譯該頁面必須傳輸的位元組總數 |
TransferRatio | RequiredBytes 除以 FileLength;規劃失敗時為零 |
RangeCount / DependencyRangeCount | Ranges 與 DependencyRanges 中的項目數 |
AllRangesAvailable | 每個規劃範圍都已存在於隨機存取來源時為 true |
UsesCrossReferenceStream | 規劃針對交叉參照串流而非傳統表格建立時為 true |
HintEncoding | 提示串流中偵測到的 THPDFLinearizedHintEncoding 布局 |
Ranges | 為要求頁面抓取的排序位元組範圍,依選項包括引導與交叉參照範圍 |
DependencyRanges | 頁面依賴的共用物件之位元組範圍 |
Diagnostic | Status 回報失敗時的 fail-closed 原因文字 |
使用說明
- 透過
THotPDF.PlanProgressiveLinearizedPageRanges每頁請求一份;信任其他欄位前先檢查Status - 先抓
Ranges以最快完成首次繪製,再視共用物件的需求抓DependencyRanges;重繪排程器正是按此順序消費規劃 - 承諾漸進式傳輸前,先用
TransferRatio與RequiredBytes估算頻寬需求